Php - 如何创建具有8位十进制数字的地板(x.8y)

问题描述:

我想要8位十进制数字的数字,但使用地板不是4/5舍入。例如:Php - 如何创建具有8位十进制数字的地板(x.8y)

1.000000009 -> 1.00000000 
1.003000001 -> 1.00300000 
111 -> 111.00000000 

我曾尝试这行代码:

$ammount = floor($ammount*100000000)/100000000; 

但对于许多像 “111”,它切换到与该行的MySQL “1”:

`mysqli_query($connection, "INSERT INTO table VALUES('', '$id', 'name', '$ammount', now(), 'yes', 'no')");` 

我也使用了这个代码,但它做了4/5四舍五入:

$ammount = number_format($ammount, 8); 
+0

那么你的问题是什么? – Styphon

+0

'如果我把这个数字:“111”它切换到“1.00000000”'我没有看到:https://eval.in/820205 – roberto06

+0

“但我想太多数字以降低价值” – Norbert

您需要8个十进制数字,但总是四舍五入,而不是使用4/5四舍五入。

修复的方法是简单的:减去0.000000005然后让4/5四舍五入发生:

$floord = 0.000000005; 

$a = 1.000000009; 
echo sprintf('%.8f', $a - $floord) . "\r\n"; 
$a = 1.003000001; 
echo sprintf('%.8f', $a - $floord) . "\r\n"; 
$a = 87654321; 
echo sprintf('%.8f', $a - $floord) . "\r\n"; 

的结果是:

1.00000000 
1.00300000 
87654321.00000000 

要清楚,你提供给MySQL的是什么:

$around = sprintf('%.8f', $a - $floord);