在mysql中未按预期存储十进制数字

时间:2016-06-11 18:53:11

标签: mysql laravel-5.2

当我想将十进制数存储在格式为**(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;

你的帮助非常感谢。

1 个答案:

答案 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存储在数据库中的原因。