PHP Typecasting float-> int - PullRequest
       14

PHP Typecasting float-> int

4 голосов
/ 13 января 2010

Учитывая этот код 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)

Как я могу получить правильное преобразование типов?

Ответы [ 2 ]

4 голосов
/ 13 января 2010

Из руководства по PHP на Печатное число типа Floating to Integer

Внимание

Никогда не приводите неизвестную дробь к целому числу, так как это иногда может привести к неожиданным результатам.

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

См. Также предупреждение о точности с плавающей точкой .

2 голосов
/ 13 января 2010

Для числа с плавающей точкой я бы предложил round. Это должно соответствовать неточности IEEE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...