浮点数运算的陷阱可以归结为 2 个原因:一是能够表示的精度有限,而是以二进制表示。这些换来的代价是速度上的优势,Ruby 中,为了提高精度,提供了 BigDecimal 类,有 3 个特征: 1,与 Bignum 一样,有效数字自动扩展; 2,以十进制计算; 3,以 C 语言记述,比内嵌的浮点数类 Float 要慢。
查了点资料。浮点数其实是真实数的近似,所以产生了限制。以下几点要注意:
1,浮点数是有限的。 浮点数只能拥有有限信息。
2,浮点数有误差。 任意的实数,只要是用有效数字和指数的结合来近似表示的,有效数字的不足部分被简单地忽略。多次运算后,与实际值的误差就会累计起来,计算结果与理论值偏差很大是常有的事。
3,对于浮点小数,结合法不成立。 结合法是指加法和乘法中,不管顺序怎样,计算结果都相同的法则。但在浮点小数中不成立。
@quakewang 谢谢
速度很快。楼主的数据库用的是什么,图片存储在数据库中吗,怎么解决图片访问速度问题阿
这个帖子和以前的一个贴重复了 http://ruby-china.org/topics/437