Hei*_*ein 4 php floating-point decimal
我有这个PHP代码:
<?php
$float = "1,99";
echo "<p>$float<br>";
$float = floatval($float); // Without this line number_format throws a notice "A non well formed numeric value encountered" / (float) $float leads to the same output
$val = number_format($float, 2,'.', ',');
echo "$float</p>";
?>
Run Code Online (Sandbox Code Playgroud)
为什么它会返回1?不要那样.
和:是的,有是在转换到1.99 1.99从某种意义上说;-)
谢谢你的建议......
问题是,PHP不会将,in 识别1,99为小数分隔符.该float类型被定义为具有以下正式定义:
LNUM [0-9]+
DNUM ([0-9]*[\.]{LNUM}) | ({LNUM}[\.][0-9]*)
EXPONENT_DNUM [+-]?(({LNUM} | {DNUM}) [eE][+-]? {LNUM})
Run Code Online (Sandbox Code Playgroud)
这意味着它只接受.小数分隔符.这实际上与为number_format无法在无效数据类型上发出警告的原因相同,因为它无法转换1,99为float内部数据.
以下应该有效:
$float = "1,99";
echo "<p>$float<br>";
$val = number_format(str_replace(',', '.', $float), 2,'.', ',');
echo "$float</p>";
Run Code Online (Sandbox Code Playgroud)