<分区> 分区>
我知道这个问题已经被问过很多次了,我也看过很多博客和 SO 答案,但这个问题让我抓狂。我只想将一个两位小数乘以 100,这样我就去掉了它的小数:
>>> 4321.90 * 100
432189.99999999994
>>> Decimal(4321.90) * Decimal(100)
Decimal('432189.9999999999636202119291')
对于这种看似微不足道的操作,我不敢使用舍入。会安全吗?如果精度问题给我带来了麻烦,结果接近 xxx.5 怎么办?那会发生吗?我确实理解二进制级别的问题,但我来自 C#,我对 .Net 的 decimal
类型没有这个问题:
decimal x = 4321.90m;
decimal y = 100m;
Console.WriteLine(x * y);
432190,00
我认为 Python 的 decimal 模块应该可以解决这个问题。我正准备将初始值转换为字符串并使用字符串操作进行数学运算,对此我感到很遗憾...