C #: Как преобразовать любой float в строку с двумя десятичными знаками, избегая округления десятичных дробей - PullRequest
1 голос
/ 07 ноября 2019

Я хочу преобразовать любое входное число с любым числом десятичных знаков в строку, содержащую только 2 знака после запятой;если я сделаю:

(13399.25f). ToString ("#. 00") возвращает "13399,25" -> ОК

НО,

(133995.25f) .ToString ("#. 00") возвращает "133995,30" -> KO!

Кроме того, я вижу, что

(133995.25d) .ToString ("#. 00") возвращает "133995,25" -> OK

Здесь говорится, что "float" имеет "точность" 7 цифр ... число 133995.25f имеет 8 цифр ... Итак, является ли Precision количеством цифр, которое имеет число в целом? Я думал, что это было количество цифр только для десятичной части ...:

https://www.codingame.com/playgrounds/14640/c-professional---numbers/numeric-types-in-c

Кроме того, «шкала» указывает, что число может достигать ± 3,4x1038намного меньше, чем мой номер ... Почему это?

Кроме того, эта статья смущает меня еще больше: C # float.ToString Значения округления

Предлагает использовать формат "G9", но если мой ввод имеет nr. десятичных знаков, отличных от 2, я бы не получил выходную строку с двумя десятичными знаками ...

Спасибо!

...