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).' &euro;';
echo $price;

输出:

23,99 €

f 表示它会将字符串视为浮点数,并进行相应的格式化。

【讨论】:

谢谢,但如下所述,我还需要使用逗号小数分隔符,而不是点之一 :) 无论如何我解决了这个问题,我错误地 number_formatting 错误的变量(已经格式化)。 抱歉,编辑了代码以反映 - 您只需将 . 更改为 ,,简单。【参考方案2】:

为什么不简单地使用 round ?

$price = round($price, 2)." &#8364;";

【讨论】:

谢谢,但我需要使用欧洲十进制标点符号,即逗号而不是点。 不,我的意思是输入数字带有盎格鲁萨克森(点)小数分隔符,我需要将其转换为欧洲(逗号)小数分隔符。这就是为什么我使用 number_format 而不是 round() 哦,好的,那么您应该在调用 number_format 时尝试将 $price 转换为浮点数 非常感谢!我刚刚发现 ***.com 有多么有用。太棒了!

以上是关于PHP number_format() 十进制 .99 变为 .00的主要内容,如果未能解决你的问题,请参考以下文章

十进制的number_format问题[关闭]

PHP函数number_format()

php 的 number_format使用

在php中将整数转换为十进制值

停止为 PHP 提供错误 number_format

PHP - number_format 因数学运算失败