R*******c 发帖数: 249 | 1 试了很多例子,还是不知道为什么。。。比如:
> 1.37+0.11==1.48
[1] FALSE
> 3.1+2.8==5.9
[1] TRUE
> 3.1+2.7==5.8
[1] FALSE
> 1.25+0.31==1.56
[1] TRUE
多谢~ |
s******e 发帖数: 343 | 2 Most float has no exact representation in binary format, just approximation.
|
n*****n 发帖数: 3123 | 3 floating point number
you may try 3.1+2.7-5.8 |
R*******c 发帖数: 249 | 4 多谢,我猜大概也是这方面原因,可是不知道细节
approximation.
【在 s******e 的大作中提到】 : Most float has no exact representation in binary format, just approximation. :
|
R*******c 发帖数: 249 | 5 恩,可是以后怎么预防这种情况呢?
比如出现在if条件里的话,都不能直接写3.1+2.7==5.8,也太麻烦了
【在 n*****n 的大作中提到】 : floating point number : you may try 3.1+2.7-5.8
|
n*****n 发帖数: 3123 | 6 3.1+2.7-5.8 >-1e-10 & 3.1+2.7-5.8<1e-10
【在 R*******c 的大作中提到】 : 恩,可是以后怎么预防这种情况呢? : 比如出现在if条件里的话,都不能直接写3.1+2.7==5.8,也太麻烦了
|
R*******c 发帖数: 249 | 7 恩,多谢,这种方法肯定能行,不过总觉得实际用的时候难免会忘掉。。。
【在 n*****n 的大作中提到】 : 3.1+2.7-5.8 >-1e-10 & 3.1+2.7-5.8<1e-10
|
t*****i 发帖数: 426 | 8 try all.equal(1.37+0.11, 1.48), all.equal(3.1+2.7, 5.8) |
P****D 发帖数: 11146 | 9 Good trick.
http://astrostatistics.psu.edu/su07/R/html/base/html/all.equal.
【在 t*****i 的大作中提到】 : try all.equal(1.37+0.11, 1.48), all.equal(3.1+2.7, 5.8)
|