Php 将浮点数乘以-1.0会将数字转换为整数

Php 将浮点数乘以-1.0会将数字转换为整数,php,casting,decimal,Php,Casting,Decimal,当我有一个十进制数并尝试将其设为负数时,它会将数字转换为整数。在测试代码中,$myl->point\u spread为1.5 echo "Point spread: " . ($myl->point_spread * -1.0) . " and " . $myl->point_spread . "\n"; 以下是输出: 点间距:-1和1.5 我还尝试了-$myl->point\u-spread和0-$myl-point\u-spread,但均无效 那么是什么原因呢?如何获得我所期望

当我有一个十进制数并尝试将其设为负数时,它会将数字转换为整数。在测试代码中,
$myl->point\u spread
1.5

echo "Point spread: " . ($myl->point_spread * -1.0) . " and " . $myl->point_spread . "\n";
以下是输出:

点间距:-1和1.5

我还尝试了
-$myl->point\u-spread
0-$myl-point\u-spread
,但均无效


那么是什么原因呢?如何获得我所期望的
-1.5
的正确值?

正如其他有用的评论所指出的,print\r或vardump显示它不是我所期望的原始浮点值。使用floatvar($myl->point_spread)*-1.0给出了预期结果。谢谢大家。

在您写的评论中,$myl->point\u spread是一个SimpleXMLElement对象。 尝试将该值强制转换为浮动:

echo "Point spread: " . (((float)$myl->point_spread) * -1.0) . " and " . $myl->point_spread . "\n";

不为我重现
var\u dump($myl->point\u spread)
返回什么?对。。。这是一件如此简单的事情,我必须在其他地方做一些事情,导致这种行为。我甚至不知道从哪里开始。谢谢你的检查。你能试着做
var\u转储($myl->point\u spread)吗而不是回声<代码>$myl->point\u spread
可能是与浮点型不同的类型,但实际上也无法为我复制-我得到了您想要的
-1.5
结果,很抱歉,这是打印的,不是var\u dump。这里是var_dump
对象(simplexmlement)#166(1){[0]=>string(3)“1.5”}
看起来PHP+7.2.18的行为是正确的。