当我想在 mysql 十进制字段中存储十进制数字时,格式如 **(8,4),但它没有完全存储。即 **13850 存储为 13.0000。 这是我在 Controller (Laravel) 中的代码:
$getRate = DB::table('currency_rates')
->select('crt_id','buy_rate')->orderBy('created_at','desc')->first();
$rate = $getRate->buy_rate;
$c_price = ($unit_price*$rate);
$expense->c_price = number_format($c_price,4);
$expense->c_total = number_format($quantity*$c_price,4);
// dd(number_format($quantity*$c_price,4));
$expense->rate_id = $getRate->crt_id;
非常感谢您的帮助。
最佳答案
DECIMAL(8,4) 表示数字最多可以有 8 位,其中 4 位必须在小数点之后,因此您的范围是 -9999.9999 到 9999.9999。
你必须允许更多的数字来存储 13850。
更新:在将数字存储到数据库之前不要使用 number_format(),仅在显示时使用它。
Number_format使用逗号作为千位分隔符,但逗号不能存储在mysql的任何数字字段中。
number_format(13850, 4) 返回字符串“13,850.0000”,这就是将 13 存储在数据库中的原因。
关于mysql - 十进制数未按预期存储在 mysql 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37767428/