echo number_format(19.99 * 100, 20); // output:1,998.99999999999977262632
为什么会这样?浮点型是怎么存储的。我的想法可能是浮点型本来就不是精确存储的。
解决了这个问题也就知道为什么intval后的值是1998了。
回复内容: echo number_format(19.99 * 100, 20); // output:1,998.99999999999977262632
为什么会这样?浮点型是怎么存储的。我的想法可能是浮点型本来就不是精确存储的。
解决了这个问题也就知道为什么intval后的值是1998了。
浮点数的存储精度跟系统有关,php 通常使用 ieee 754 双精度格式,默认是20位有效精度。floating point numbers
浮点数使用指南
贴上中文的浮点型 http://php.net/manual/zh/language.types.float.php