2

我的代码:

$baseprice=1705000/1.1;
var_dump($baseprice);
$parseprice=intval($baseprice);
var_dump($parseprice);

结果 :

float(1550000) int(1549999)

如您所见,当从浮点数转换为整数时,我丢失了 1 个数字,它在哪里,这种情况下的解决方案是什么,可以在不丢失数据的情况下进行转换,谢谢。

4

4 回答 4

3

您正在使用会丢失精度的浮点数(请参阅此链接)。

如果您正在处理货币,请使用整数并以美分、便士、芬尼或其他形式工作。在显示之前转换为货币格式。

于 2013-10-08T04:00:27.057 回答
3

解决方案如下

$baseprice=1705000/1.1;

var_dump($baseprice);

$parseprice=intval(ceil($baseprice));

var_dump($parseprice);

输出:

浮动(1550000)整数(1550000)

于 2013-10-08T04:03:56.790 回答
2

问题是当计算浮动时,我仍然不知道为什么它们有不同的像波纹管

$baseprice= 1705000/1.1 ; // 1550000

var_dump( decbin( $baseprice )); 
var_dump( decbin(1550000)); 

我们可以通过

$baseprice = round( $baseprice );
于 2013-10-08T04:04:05.970 回答
0

在浮点到整数之前将值四舍五入,然后您可以转换为 int

$baseprice=1705000/1.1;

var_dump($baseprice);
//Before float to integer round the value then you can convert to int
$baseprice =round($baseprice);

$parseprice=intval($baseprice);
var_dump($parseprice);
于 2013-10-08T04:06:12.607 回答