gpt4 book ai didi

PHP - 小数点后位置的 floatval 削减?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:03:46 27 4
gpt4 key购买 nike

我有这个 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>";
?>

为什么返回 1?别这样。

而且:是的, 将 1,99 转换为 1,99 是有意义的 ;-)

谢谢指教...

最佳答案

问题是,PHP 无法将 1,99 中的 , 识别为小数点分隔符。 float 类型被定义为具有以下 formal definition :

LNUM          [0-9]+
DNUM ([0-9]*[\.]{LNUM}) | ({LNUM}[\.][0-9]*)
EXPONENT_DNUM [+-]?(({LNUM} | {DNUM}) [eE][+-]? {LNUM})

这意味着它只接受 . 作为小数点分隔符。这实际上与 number_format 对无效数据类型发出警告的原因相同,因为它无法在内部将 1,99 转换为 float

以下应该有效:

$float = "1,99";
echo "<p>$float<br>";
$val = number_format(str_replace(',', '.', $float), 2,'.', ',');
echo "$float</p>";

关于PHP - 小数点后位置的 floatval 削减?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7594631/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com