有人可以解释为什么乘以100会得到一个不太准确的结果,但乘以10两次会得到更准确的结果吗?
± % sc
Loading development environment (Rails 3.0.1)
>> 129.95 * 100
12994.999999999998
>> 129.95*10
1299.5
>> 129.95*10*10
12995.0
Run Code Online (Sandbox Code Playgroud) 我想计算 x/y,其中 x 和 y 都是有符号整数,并将结果四舍五入到最接近的整数。具体来说,我想要一个rquotient(x, y)仅使用整数算术的函数,以便:
ASSERT(rquotient(59, 4) == 15);
ASSERT(rquotient(59, -4) == -15);
ASSERT(rquotient(-59, 4) == -15);
ASSERT(rquotient(-59, -4) == 15);
ASSERT(rquotient(57, 4) == 14);
ASSERT(rquotient(57, -4) == -14);
ASSERT(rquotient(-57, 4) == -14);
ASSERT(rquotient(-57, -4) == 14);
Run Code Online (Sandbox Code Playgroud)
我已经向 SO 寻求解决方案,并发现以下内容(每个都有自己的缺点):
有没有人在ruby中解决这个问题:
让我们说:a = 8.1999999
我们想把它舍入2位小数,即8.20,然后乘以1,000,000,变成8,200,000
我们这样做;
(a.round(2) * 1000000).to_i
Run Code Online (Sandbox Code Playgroud)
但我们得到的是8199999,为什么?
事情是,如果我们乘以1000,100000或10000000而不是1000000,我们得到了正确的结果.任何人都知道为什么?
我们使用ruby 1.9.2并尝试使用1.9.3.
谢谢!