我正在处理一个处理monetairy金额的PHP脚本,因此需要精确到2位小数。为此,我将用户输入转换为一个数字,并将其乘以100,然后将其转换为int。这工作正常,直到我最近发现一个数字,当投到int时增加1。PHP(int)生成错误的数字
的故障代码:
$number = (int)(str_replace(',','.',$_POST["input"])*100);
,让问题的数量2509,22(我住在荷兰,所以我们使用逗号为小数,因此在上面的代码行的str_replace函数)。 该值创建整数$ number 250921,显然是1太低。 我知道,INT是有限制的,但这个数字是很好的限制之内就我所知...
为什么你需要将它设置为int?这样做的目的是什么?这个int旁边会发生什么? – Andreas
我使用它来确保输入不包含2位以上的小数。如前所述,这是财务信息,这是为了防止用户在金融系统中输入小于可能的分数。 – Discoverer
改为使用bcmath。除非您完全确定输出结果并通过代码判断,否则绝对不要使用浮点操作,我相信您不会。您可以在这里阅读更多关于浮点数精度的信息http://php.net/manual/en/language.types.float.php –