gpt4 book ai didi

php - "round"如何返回 float ?

转载 作者:行者123 更新时间:2023-12-03 20:23:34 24 4
gpt4 key购买 nike

PHP 浮点类型是 IEEE-754 binary64。
数字 59.95 不能以二进制精确存储。在 IEEE-754 binary64 中 59.95 的表示应该是 59.9500000000000028421709430404007434844970703125 .
但是,当我这样做时

<?php 

return 59.95
它返回 59.95。这怎么可能?
还有功能 round声称将 val 的舍入值返回到指定精度作为浮点数。但这怎么可能呢?不存在 59.95 的浮点表示点后只有两个两位数。

最佳答案

PHP 通过 precision 控制浮点到字符串的精度ini 设置。这个值是 14默认情况下。
如果您改为使用 32或其他任意更大的值,你会看到你在找什么:

> php -d "precision=32" -r "print(59.95);"
59.950000000000002842170943040401
^-- Default precision stops here
由于与“精确”值的差异发生在默认精度值之后,因此该值将按照您的预期打印:
> php -d "precision=14" -r "print(59.95);"
59.95

关于php - "round"如何返回 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65919653/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com