0.58专题

回复:浮点数0.57 0.58 造出的坑爹问题

今天看到 vb2005xu 提到了一个问题  浮点数0.57 0.58 造出的坑爹问题。  parseInt(0.59*100) // 59parseInt(0.58*100) // 57parseInt(0.57*100) // 56parseInt(0.56*100) // 56  为什么会这样呢?随后又举了 PHP 的例子,结果还是一样的结果,只是函数换成了 intval

php中intval(0.58*100) 为什么输出 57 ?

和浮点数的特点有关系,浮点数的存储不是我们平时见到的样子,0.58,存起来依旧有一堆后缀。不仅仅是php,javascript也是有一样的情况。 PHP 的 Manual 里有写,是 intval() 这个函数的问题,采用的是“截断”法取整。其实如果你直接输出 0.57*100 结果是正确的。intval converts doubles to integers by truncating th