显示小数点后两位数字
将 PHP 字符串四舍五入到小数点后两位的正确方法是什么?
$number = "520"; // It's a string from a database
$formatted_number = round_to_2dp($number);
echo $formatted_number;
输出应为520.00
;
round_to_2dp()
函数应该如何定义?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(24)
这将精确显示小数点后两位数字。
优点:
如果您只想在浮点值后显示两位数字而不是 int,请使用此方法。
This will display exactly two digits after the decimal point.
Advantage:
If you want to display two digits after a float value only and not for int, then use this.
它将返回 5.98,而不对数字进行四舍五入。
It will return 5.98 without rounding the number.
使用 PHP number_format() 函数。
Use the PHP number_format() function.
添加到其他答案,因为 number_format() 默认情况下会添加千位分隔符。
要删除它,请执行以下操作:
Adding to other answers, since number_format() will, by default, add thousands separator.
To remove this, do this:
对于条件舍入,即。在真正需要的地方显示小数,否则整数
123.56 => 12.56
123.00 => 123
For conditional rounding off ie. show decimal where it's really needed otherwise whole number
123.56 => 12.56
123.00 => 123
我自己做。
I make my own.
round_to_2dp 是一个用户定义的函数,除非您发布该函数的声明,否则什么也做不了。
但是,我的猜测是这样做:
number_format($number, 2);
round_to_2dp
is a user-defined function, and nothing can be done unless you posted the declaration of that function.However, my guess is doing this:
number_format($number, 2);
舍入正确地对数字进行四舍五入,如果四舍五入后恰好只有 1 位小数,则 sprintf 会强制将其保留到 2 位小数。
The rounding correctly rounds the number and the sprintf forces it to 2 decimal places if it happens to to be only 1 decimal place after rounding.
这将为您提供小数点后 2 个数字。
This will give you 2 number after decimal.
如果你想在整个项目中使用两位小数,你可以定义:
那么下面的函数将产生你想要的结果:
但如果你不使用 bcscale 函数,你需要编写如下代码来得到你想要的结果结果。
了解更多
BC 数学函数
bcscale
If you want to use two decimal digits in your entire project, you can define:
Then the following function will produce your desired result:
But if you don't use the bcscale function, you need to write the code as follows to get your desired result.
To know more
BC Math Functions
bcscale
不带圆的数字
Number without round
这是 strtok 和 str_pad:
Here's another solution with strtok and str_pad:
示例
Examples
这与我今天遇到的问题相同,想要对数字进行舍入并将浮点值返回到给定的小数位,并且它不能是字符串(从 number_format 返回)
答案是
printf('%.' . $decimalPlaces . 'f', round($number, $decimalPlaces));
感谢 mickmackusa 指出错误
That's the same question I came across today and want to round a number and return float value up to a given decimal place and it must not be string (as returned from number_format)
the answer is
printf('%.' . $decimalPlaces . 'f', round($number, $decimalPlaces));
thanks to mickmackusa for indicating the mistake
您可以使用number_format():
示例:
此函数返回一个字符串。
You can use number_format():
Example:
This function returns a string.
使用
round()
(如果您只需要浮点格式的数字,请使用,否则使用 number_format() 作为 Codemwnci 给出的答案):来自手册:
...
Use
round()
(use if you are expecting a number in float format only, else use number_format() as an answer given by Codemwnci):From the manual:
...
或者,
Alternatively,
http://php.net/manual/en/function.round.php
例如
http://php.net/manual/en/function.round.php
e.g.
尝试:
输出将是:
Try:
The output will be:
使用 PHP number_format() 函数。
例如,
输出将是:
Use the PHP number_format() function.
For example,
The output will be:
使用
round(yourValue,decimalPoint)
(php 手册页面< /a>) 或number_format(yourValue,decimalPoint);
number_format()
以字符串形式返回值,例如 1,234.67 类型。因此在这种情况下您不能使用它进行加法或任何计算。如果您尝试,那么您必须处理数字格式错误...在这种情况下,
round(121222.299000000,2)
将是更好的选择。结果将是 121222.29 ...
use
round(yourValue,decimalPoint)
(php manual’s page) ornumber_format(yourValue,decimalPoint);
number_format()
return value as string like this type 1,234.67. so in this case you can not use it for addition or any calculation. if you try then you have to deal with Number Format Error...In this case
round(121222.299000000,2)
will be better option.The result would be 121222.29 ...
您可以使用 PHP
printf
或sprintf
函数: 使用sprintf
的示例:您可以在不使用
echo
的情况下运行相同的代码出色地。示例:sprintf("%.3f", $num);
输出:
或者,使用
printf
:输出:
You can use the PHP
printf
orsprintf
functions:Example with
sprintf
:You can run the same without
echo
as well. Example:sprintf("%.3f", $num);
Output:
Alternatively, with
printf
:Output:
在这里,我使用函数在
.
(点)后得到两位小数...上述函数的结果:
新正确答案
使用 PHP 原生 BC Math 函数 bcdiv
Here I get two decimals after the
.
(dot) using a function...Results from the above function:
New Correct Answer
Use the PHP native BC Math function bcdiv
解决此问题的另一种更奇特的方法是使用
bcadd()
的 $right_operand 的虚拟值为0
。Another more exotic way to solve this issue is to use
bcadd()
with a dummy value for the $right_operand of0
.