Laravel(或PHP / MySQL?)会在小数点

时间:2018-01-30 07:51:36

标签: php mysql laravel floating-point

也许这是一个更普遍的MySQL或PHP问题,源于我在这些领域缺乏知识,但是......

所以我在Laravel 5.4上有一个应用程序,数据库是MySQL 5.7.17

我在talbe中有一个列,通过迁移创建:

$table->float('operator_price', 9, 2)->nullable()->change();

(根据Laravel docs,这应该意味着该列的类型为'FLOAT',总数为9位,小数点后为2) enter image description here

当用户在表单字段中输入1000.25并保存时 - 它保存为“1000.25”,

但如果用户输入10000.25 - 它会保存为“10000.2”。

如果数字超过9999,它会削减最后一位数。

可能是什么原因以及如何解决?

谢谢。

更新:我已经完成了巡演中的显示栏;

并显示列'operator_price'的类型为'float':

enter image description here

2 个答案:

答案 0 :(得分:3)

实际上,float / double不如十进制精确。对于货币数据,建议使用小数类型,因此您应该使用:

$table->decimal(10, 2); // instead of float

阅读this了解一些详细信息和float manual from MySql

答案 1 :(得分:0)

根据Laravel迁移documentation

$table->float('amount', 8, 2);  

FLOAT等效列,具有精度(总位数)和小数位数(小数位)。