将double值乘以100.0会引入舍入误差?

Sop*_*are 7 .net c# math

这就是我正在做的事情,99.999%的时间工作:

((int)(customerBatch.Amount * 100.0)).ToString()
Run Code Online (Sandbox Code Playgroud)

金额值是双倍的.我试图将价值以便士的价格写入文本文件,以便传输到服务器进行处理.金额绝不会超过2位精度.

如果您使用580.55作为金额,则此行代码将返回58054作为字符串值.

此代码在64位Web服务器上运行.

有任何想法吗?

Jes*_*alm 21

你应该使用十进制进行货币计算.

((int)(580.55m * 100.0m)).ToString().Dump();
Run Code Online (Sandbox Code Playgroud)

  • 它可能适用于那个价值,但其他人却没有.一旦你的'包装器'将SQL MONEY转换为双倍,就会造成损坏.你必须摆脱双打. (3认同)

And*_*zub 8

您可以使用decimal值进行准确计算.Double是浮点数,在计算过程中不能保证精确.