$value = bcmul((float)$TotalMoney, $p,8);
$value = bcdiv((float)$Value, 100,8);
返回8.431e-05作为脚本
中的一个值我已经尝试了
$newNum = (float)$value;
$newNum = number_format((float)$value, 8);
$newNum = sprintf('%.8f',$value);
function scientific_notation($in_float_value, $in_decimal_place_count = -1)
{
// Get the exponent
$abs_float_value = abs($in_float_value);
$exponent = floor($abs_float_value == 0 ? 0 : log10($abs_float_value));
// Scale to get the mantissa
$in_float_value *= pow(10, -$exponent);
// Create the format string based
// on the requested number of decimal places.
$format = ($in_decimal_place_count >= 0) ? "." . $in_decimal_place_count : "";
//echo("Format0: $format");
// Format the exponent part using zero padding.
$formatted_exponent = "+" . sprintf("%02d", $exponent);
if($exponent < 0.0)
{
$formatted_exponent = "-" . sprintf("%02d", -$exponent);
}
$format = "%" . $format . "fe%s";
//echo("Format1: $format");
// Return the final value combining mantissa and exponent
return sprintf($format, $in_float_value, $exponent);
}
$newNum = scientific_notation($value,8);
在phpfiddle中试过它并且它有效。也许问题是将其存储在数据库中。它在数据库中存储为8.431e-05
我做错了什么?
答案 0 :(得分:2)
使用比特币余额时,建议将数据存储在satoshis数据库中作为整数,然后在屏幕上向用户显示时,可以将其转换回8位小数。
$amount = 0.0132;
$convert = $amount * 100000000;
// store in DB as the converted amount 1320000 as an integer
// when grabbing from DB convert it back
$databaseValue = 1320000;
$convertBack = $databaseValue / 100000000;
$display = number_format($convertBack, 8);
echo $display;
答案 1 :(得分:2)
使用下面的示例在PHP上将科学记数法转换为浮点/小数:
echo sprintf('%f', floatval('-1.0E-5'));//default 6 decimal places
echo sprintf('%.8f', floatval('-1.0E-5'));//force 8 decimal places
echo rtrim(sprintf('%f',floatval(-1.0E-5)),'0');//remove trailing zeros
答案 2 :(得分:0)
我只使用number_format()
PHP的实际情况:
$n=pow(71663616,2);
echo $n //5.1356738581955E+15
现在调用十进制表示法:
$n=pow(71663616,2);
echo number_format($n) //5,135,673,858,195,456