PHP number_format() 十进制 .99 变为 .00
Posted
技术标签:
【中文标题】PHP number_format() 十进制 .99 变为 .00【英文标题】:PHP number_format() decimal .99 is turned to .00 【发布时间】:2012-02-08 14:00:34 【问题描述】:我想把一个“脏”的数字变成一个正确书写的货币价格。 输入数字将类似于 23.99000,我想显示 23,99 + 欧元符号。
我用这个:
$price = number_format($price, 2, ',', '')." €";
但结果将是 23,00 欧元而不是 23,99 欧元。
我做错了什么?谢谢!
【问题讨论】:
可能是错误的舍入。请在操作前向我们展示$price
的确切内容。
$price
到底是什么?浮标?一个字符串?给我们看var_dump($price)
。
价格精确定义为 $price = 23.99000
我使用了 var_dump,上面写着 STRING
那么它是一个字符串。把它变成一个浮点数,问题解决了:-)
【参考方案1】:
试试这样的:
<?php
$price = 23.99000;
$price = sprintf("%01,2f", $price).' €';
echo $price;
输出:
23,99 €
f
表示它会将字符串视为浮点数,并进行相应的格式化。
【讨论】:
谢谢,但如下所述,我还需要使用逗号小数分隔符,而不是点之一 :) 无论如何我解决了这个问题,我错误地 number_formatting 错误的变量(已经格式化)。 抱歉,编辑了代码以反映 - 您只需将.
更改为 ,
,简单。【参考方案2】:
为什么不简单地使用 round ?
$price = round($price, 2)." €";
【讨论】:
谢谢,但我需要使用欧洲十进制标点符号,即逗号而不是点。 不,我的意思是输入数字带有盎格鲁萨克森(点)小数分隔符,我需要将其转换为欧洲(逗号)小数分隔符。这就是为什么我使用 number_format 而不是 round() 哦,好的,那么您应该在调用 number_format 时尝试将 $price 转换为浮点数 非常感谢!我刚刚发现 ***.com 有多么有用。太棒了!以上是关于PHP number_format() 十进制 .99 变为 .00的主要内容,如果未能解决你的问题,请参考以下文章