0

我注意到当我将一个值格式化为货币时会出现一个舍入问题——一旦我通过某个阈值,十进制值就会改变。

这里有 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?

请让我知道是否有解决方法。谢谢。

4

1 回答 1

2

You lose precision because of the float value type. Use the decimal type:

decimal valueDec = 1000000.25M;

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

Output:

1,000,000.25

于 2013-02-19T20:16:24.187 回答