Tag: ieee 754

ruby算术

为什么这个代码7.30 – 7.20在ruby中返回0.0999999999999996 ,而不是0.10 ? 但是,如果我写7.30 – 7.16 ,例如,一切都会好的,我会得到0.14 。 问题是什么,我该如何解决?

为什么浮点数打印得如此不同?

众所周知,(大多数)浮点数不能精确存储(使用IEEE-754格式时)。 所以不应该这样做: 0.3 – 0.2 === 0.1; // very wrong …因为它会导致false ,除非使用了一些特定的任意精度类型/类( Java / Ruby中的 BigDecimal,PHP中的BCMath ,Perl中的Math :: BigInt / Math :: BigFloat ,仅举几例) 。 但我想知道为什么当一个人尝试打印这个表达式的结果时, 0.3 – 0.2 ,脚本语言( Perl和PHP )给出0.1 ,但“虚拟机”( Java , JavaScript和Erlang )给出的更类似于0.09999999999999998 ? 为什么它在Ruby中也不一致? 版本1.8.6( codepad)给出0.1 , 版本1.9.3(ideone)给出0.0999…