php number_format() 的问题

Posted

技术标签:

【中文标题】php number_format() 的问题【英文标题】:issue with php number_format() 【发布时间】:2013-12-13 03:22:01 【问题描述】:

我遇到了 number_format 的问题。当 $val 的值超过 1,000 时,$update 只会设置一个值 1。如果它的值小于 1,00,它会设置正确的值。

pmV 是十进制,7,2。

我确定我只是盯着这个看太久了,我错过了一些东西。我究竟做错了什么?请教我! ;)

// Set variables for received data
$id = strval($_GET['id']); // value is 1
$k = strval($_GET['k']); // value is 1
$dwt = strval($_GET['dwt']); // value is 25
$spot = "." . strval($_GET['spot']); // value is .70

//Query the database based on the variables received and 'echo' the results back
$sql="SELECT * FROM metals WHERE id = '".$id."'";
$result = mysqli_query($con,$sql);
while($row = mysqli_fetch_array($result)) 
    if ($id == 1) // If we are calculating Gold, then add Karat into the calculation
        $num = ((($row['value']/20)*$k)*$dwt)*$spot;  //$row['value']=1200.01
    
    else   // If not, then don't
        $num = (($row['value']/20)*$dwt)*$spot;
    
    $val = number_format($num,2,'.',',');
    echo $val;  // Send the value back to page --> Sending correct value - 1,050.01

    // Update the DB with the calculated PM amount
    $update="UPDATE totals SET pmV = $val WHERE id='1'";
    $result2 = mysqli_query($con,$update);  // UPDATES value of pmV to '1' instead of 1,050.01

    // Get the Diamond Value from the DB and Update the Total calculation
    $select="SELECT dV FROM totals WHERE id='1'";
    $result3 = mysqli_query($con,$select);
        while($dv = mysqli_fetch_array($result3)) 
            $val2 = $dv['dV']+$val;
            $sql4 = "UPDATE totals SET total = $val2 WHERE id='1'";
            $result4 = mysqli_query($con,$sql4);
            ;
;

mysqli_close($con);

【问题讨论】:

您是否有理由在 php 中进行计算,而不是在将 totalsmetals 连接的单个 UPDATE 语句中进行所有操作? 这是一个内部计算器,供典当员工计算他们将为钻石和贵金属提供的价值。这个 php 文件需要回显贵金属的金额,并将该金额添加到数据库中并在不同的列中重新计算总数,这样如果棋子中涉及钻石,页面也可以给出运行总数.如果有更好的方法来实现同样的目标,我会全力以赴。 【参考方案1】:

1,050.01 不是有效数字。这是一个格式化的字符串。所以当你试图把它当作一个数字来对待时,事情就会破裂。

要将数字四舍五入到小数点后,请尝试以下操作:

$val = floor($num*100)/100;

【讨论】:

这是有道理的。谢谢尼特!

以上是关于php number_format() 的问题的主要内容,如果未能解决你的问题,请参考以下文章

php中的number_format [关闭]

PHP - number_format 因数学运算失败

PHP number_format() 函数

PHP - number_format 浮点数 [重复]

如何从 number_format 函数中删除 PHP 中的美分部分

PHP number_format 显示不正确