我使用Ruby on Rails 4.2.3。如果我在一个只允许两位小数的数据库字段中存储一个有五位小数的数字,那么数字是截断的还是自动舍入的?
10.12565是10.12还是10.13?
两者的数据库字段类型都是十进制数据类型。
答案 0 :(得分:1)
基于文档:http://www.postgresql.org/docs/9.0/static/datatype-numeric.html
在章节中:8.1.2。任意精度数
他们将自动舍入:
如果要存储的值的比例大于声明的值 列的比例,系统会将值舍入到指定的值 小数位数。然后,如果左边的位数 小数点超过声明的精度减去声明的精度 比例,提出错误。
我建议使用以下方法将数据库设置为该字段的预期结果: http://www.postgresql.org/docs/8.1/static/functions-math.html
然后编写单元测试以确保获得预期的结果。