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);
答
您需要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);
那么你的问题是什么? – Styphon
'如果我把这个数字:“111”它切换到“1.00000000”'我没有看到:https://eval.in/820205 – roberto06
“但我想太多数字以降低价值” – Norbert