【问题标题】:PHP typecasting float->intPHP 类型转换 float->int
【发布时间】:2010-01-13 09:01:29
【问题描述】:

鉴于此 PHP 代码:

// total is 71.24 (float)
$value = $total * 100;
var_dump($value);
$valuecast = (int)$value;
var_dump($valuecast);
settype($value, 'int');
var_dump($value);

var_dump($value) 给出 float(7124)

var_dump($valuecast) 给出 int(7123)

var_dump($value) 在 settype 之后给出 int(7123)

我怎样才能得到正确的类型转换?

【问题讨论】:

    标签: php types casting


    【解决方案1】:

    来自TypeCasting Float to Integer上的 PHP 手册

    警告

    切勿将未知分数转换为整数,因为这有时会导致意外结果。

    <?php
        echo (int) ( (0.1+0.7) * 10 ); // echoes 7!
    ?>
    

    另请参阅warning about float precision

    【讨论】:

    【解决方案2】:

    对于浮点到整数,我建议round。这是为了迎合 IEEE 浮点不精确性。

    【讨论】:

    • 谢谢,它有效!!!我尝试了所有 PHP 转换函数,除了这个(当然)。
    猜你喜欢
    • 2014-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多