浮点数格式问题

本文关键字:问题 格式 浮点数 | 更新日期: 2023-09-27 18:00:14

我注意到,当我将一个值格式化为货币时,会出现一个舍入问题——一旦我传递了某个其他值,十进制值就会发生变化。

这里有3个样本-第一个成功,但随着初始值的增加,其他2个没有成功。

1)

float value = 10000.25;
value_as_string = value .ToString( "0,0.00", CultureInfo.InvariantCulture );
--> "10000.25";  // great

2)

float value = 100000.25;
value_as_string = value .ToString( "0,0.00", CultureInfo.InvariantCulture );
--> "100,000.20"  // why 20 cents?

3)

float value = 1000000.25;
value_as_string = value .ToString( "0,0.00", CultureInfo.InvariantCulture );
--> "1,000,000.00"  // where did my 25 cents go?

请告诉我是否有工作要做。谢谢

浮点数格式问题

由于float值类型,您会丢失精度。使用decimal类型:

decimal valueDec = 1000000.25M;
string valueDec_string = valueDec.ToString("0,0.00", System.Globalization.CultureInfo.InvariantCulture );

输出:

100000.25atr