当我想将十进制数存储在格式为**(8,4)的mysql十进制字段中时,但它并未完全存储。即** 13850 存储为 13.0000 。 这是我在控制器(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;
你的帮助非常感谢。
答案 0 :(得分:1)
DECIMAL(8,4)表示该数字最多可以包含8位数,其中4位必须在该点之后,因此您的范围是-9999.9999至9999.9999。
您必须允许更多数字存储13850。
更新:在将数字存储到数据库之前不要使用number_format(),仅在显示时使用它。
Number_format使用逗号作为千位分隔符,但逗号不能存储在mysql中的任何数字字段中。
number_format(13850,4)返回字符串" 13,850.0000"这就是为什么你将13存储在数据库中的原因。