myInt = int( 5 * myRandom() )
myRandom()是一个随机生成的浮点数,应该是 0.2。
所以这个语句应该评估为 1。
我的问题:是否有可能由于浮点错误它不会评估为 1?
例如,如果由于浮点错误,应该是0.2的东西会比这更少吗?例如,IE 考虑以下 3 种可能性:
int(5 * 0.2 ) = 1 //case 1 normal
int(5 * 0.2000000000000001 ) = 1 //case 2 slightly larger, its OK
int(5 * 0.1999999999999999 ) = 0 //case 3 negative, is NOT OK, as int() floors it
case3甚至可能吗?0.1999999999999999是浮点错误的结果吗?到目前为止,我实际上从未见过负的 epsilon,只有情况 2,当它稍微大一点时,这没关系,就像当它被强制转换为 int() 时,它会“降低”它的正确结果。但是,对于负 epsilon,“地板”效应将使生成的 0.9999999999999996 评估为 0。