在 PHP 中格式化数字从零到六位小数

问题描述 投票:0回答:3

我想显示最多 6 位小数的数字。

像这样:

99.0000001 -> 99
99.000001  -> 99.000001
99.00001   -> 99.00001
99.0001    -> 99.0001
99.001     -> 99.001
99.01      -> 99.01
99.10      -> 99.10
99.00      -> 99

在 PHP 中执行此操作的优雅方法是什么?

php number-formatting
3个回答
2
投票

使用round(),精度为6

<?php
echo round(99.0000001, 6).PHP_EOL;
echo round(99.000001, 6).PHP_EOL;
echo round(99.00001, 6).PHP_EOL;
echo round(99.0001, 6).PHP_EOL;
echo round(99.001, 6).PHP_EOL;
echo round(99.01, 6).PHP_EOL;
echo round(99.10, 6).PHP_EOL;
echo round(99.00, 6).PHP_EOL;

https://3v4l.org/5lWCa

结果:

99
99.000001
99.00001
99.0001
99.001
99.01
99.1
99

1
投票

你可以用这个。 删除小数点后第 6 位之后的加法位。

$z = 99.0000011;  
$y = floor($z * 1000000) / 1000000;

然后计算小数点后剩余位数。

$str = "$y";
$dcount = strlen(substr(strrchr($str, "."), 1));

现在我们必须确定该值是否应该有小数,如果是,则需要有 2 位或更多小数。

$a = 0; 
If ($dcount == 1) {$a = $dcount+1;} 
else {$a = $dcount;} 
$x = number_format((float)$y, $a, '.', '');

$x 将是您正在寻找的所需结果。


0
投票
// Array of values to divide
$numerators = [1, 1, 1];
$denominators = [2, 3, 6];

// Loop through and calculate the result
foreach ($numerators as $key => $numerator) {
    $denominator = $denominators[$key];
    $result = $numerator / $denominator;
    // Print the result with 6 decimal places
    printf("%0.6f\n", $result);
}

Expected Output:

0.500000
0.333333
0.166667

您可以使用

"%0.6f\n
来实现这一点

© www.soinside.com 2019 - 2024. All rights reserved.