2013-08-21 2 views
2

Я переношу приложение из .NET в Mono Runtime, и в какой-то момент кода я вижу, что float имеет значение 158136.422. Мое понимание float состояло в том, что это была 7-значная точность, так как это число приемлемо? Моно обрезает его до 7 цифр, как я ожидал..NET Float Precision - 9 цифр?

Если в C# я

float f = 158136.422f; 

Он получает округляется до 158136.4.

+2

Как вы проверяете, что «он округляется»? – Zbigniew

ответ

10

Когда вы пишете этот код:

float f = 158136.422f; 

В точное значение, присвоенное f является 158136.421875.

Сколько цифр выводится в строковом представлении - это другое дело.

Когда я использую:

float f = 158136.422f; 
Console.WriteLine(f); 
Console.WriteLine(f.ToString("r")); 

Я получаю результаты:

158136.4 
158136.422 

как на Mono и .NET.

+0

Пятно на, спасибо! MonoDevelop должен использовать ToString() для просмотра значений во время отладки, а Visual Studio - с помощью чего-то другого. – user2617833