<分区>
我在 C++ 代码中遇到浮点精度问题
给定 double d = 32.4;
d / 0.01 == 3240.0;
给出 true,而
d / 0.1 == 324.0
给出错误。
但如果我乘以 10 和 100,那么结果都为真。
由于32.4、324、3240都可以用64bit double来表示,没有任何精度损失,所以这个结果让我很迷惑。 (我对 float 的乘除运算不是很熟悉)
在我的用例中,我将通过简单地乘以或除以 0.1、0.01、0.05 之类的值来在不同比例之间进行一些转换。我的意思是,我不需要非常高的精度,我的操作数通常少于 6 位小数,可以用 64 位 double 表示而不会丢失精度,所以我想得到一致的结果。我有一个猜测:在我的用例中,我是否应该总是使用乘法而不是除法?