问题: 为什么会出现这种情况: irb(main):007:0> 2.3*100 => 229.99999999999997
准确度从 2.3*43 就开始这么逆天了。
求解,谢谢!
http://ruby-doc.org/stdlib-2.2.2/libdoc/bigdecimal/rdoc/BigDecimal.html
require 'bigdecimal'
print BigDecimal.new('2.3') ** BigDecimal.new('100')
http://justjavac.com/codepuzzle/2012/11/11/codepuzzle-float-who-stole-your-accuracy.html 这个问题计算机科学概论之类的书里应该有叙述,和浮点数在计算机内的表示有关
跟语言无关,是实现的标准有关,只要是 ieee 754 的语言都有这样的问题的,当然我表示我是没有太整明白的. 可参考:http://stackoverflow.com/questions/56947/how-is-floating-point-stored-when-does-it-matter/57031#57031
这个计算机导论就应该会讲的吧 ieee754 的浮点数用 1. 0× 2-2(指数为 -2)这种形式去保存的 (数符位数 阶码位数 尾数位数 总位数) 这样会出现一些非规范化数 就是不能精确表达的