gpt4 book ai didi

php - 使用 (int) 和 (double) 一起截断小数时出错

转载 作者:可可西里 更新时间:2023-11-01 13:55:03 25 4
gpt4 key购买 nike

当我将 (int) 与 (double) 一起使用时,有时它无法正常工作。
查看 PHP 代码示例:

我需要保留 2 位小数并删除其他...

我知道 number_format();功能,但我不能使用它。因为是四舍五入数

number_format(24.299,2);
输出:24.30
我需要:24.29

<?php

$str="158.2";

echo (double)$str; // Output: 158.2
echo (double)$str*100; // Output: 15820
echo (int)((double)$str*100); // Output: 15819 <-WHY? It Must To Be 15820, Why 15819?
echo ((int)((double)$str*100)/100); // Output: 158.19
?>

我需要在数字中保留两位小数并去掉其他的而不四舍五入。

最佳答案

由于浮点精度(参见这个问题的例子:PHP - Floating Number Precision),158.2 * 100 不是完全15820而是一些东西像 15819.99999999

现在(int)是做类型转换的,不是做四舍五入的,小数点后面的数字都会被截掉。

I need To leave two decimals in the number and cut other WITHOUT rounding.

这很简单:

number_format($str, 2);

更新

number_format 四舍五入,所以有点复杂:

bcmul($str,100,0)/100

bcmul以任意精度相乘,在本例中为 0。结果:

bcmul(158.2,100,0)/100 == 158.2
bcmul(24.299,100,0)/100 == 24.29

关于php - 使用 (int) 和 (double) 一起截断小数时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15006126/

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