这种奇怪的浮点格式是如何出现的,既有点又有逗号?

How such strange float format appears, both with dot and comma?

提问人:Hayate 提问时间:8/4/2020 最后编辑:Roberto CaboniHayate 更新时间:8/6/2020 访问量:66

问:

最近,我正在重构应用程序中的测试,并破坏了其中一个测试。但是,只有当我运行整套测试时,我才能重现问题。如果我只运行一个有问题测试的类,一切正常。

问题行:

$float_value = (float)$string_value;

当只执行一个测试类时,它是什么样子的(正常大小写):

enter image description here

出现问题时它的外观:

enter image description here

然后我在数据库中插入该值时遇到了问题,因为数据库不同意该值是数字。

“逗号和点同时表示”是什么意思?

我试图查找有关逗号作为分数部分分隔符和出现点的信息,但失败了。

对于这种行为,我们是否有任何设置?因为只有当之前执行过其他测试时,它才能重现。

php 浮动精度

评论

0赞 jspit 8/4/2020
使用代码示例描述您的问题,以便可以独立于测试环境、自己的类和数据库使用 PHP 重现它。
0赞 Hayate 8/4/2020
@jspit这显然是最棘手的部分。我可以重现它的唯一方法 - 运行我的整套测试。
0赞 jspit 8/4/2020
我认为问题出在开发/测试环境或数据库中,与PHP无关。
0赞 Hayate 8/4/2020
@jspit 我只想提醒一下,我们讨论的是 PHP 的类型转换运算符。我不认为数据库会以任何方式影响该运算符。如果是环境 - 这正是我的问题 - 我们如何以上述方式更改 PHP 类型转换运算符的行为?

答:

0赞 Hayate 8/6/2020 #1

所以我发现了一个问题并解决了它。原因在将小数点设置为逗号的测试方法之一中调用了 setlocale()。