create table test_tables (
id number(38) primary key,
name varchar2(50),
age number(5),
gender varchar2(10),
point number(5,2)
);
insert into test_tables values (1,'name1',20,'male',80.5);
insert into test_tables values (2,'name2',21,'female',60.5);
insert into test_tables values (3,'name3',23,'male',90.5);
insert into test_tables values (4,'name4',19,'male',79.5);
insert into test_tables values (5,'name5',18,'female',80.5);
TestTable.sum(:point)的结果是391,
为什么不391.5?
我检查了rdoc,有一些描述:
The value is returned with the same data type of the column
但在我的情况下,'point'的类型是数字(5,2) 这不是漂浮物吗?
答案 0 :(得分:3)
我对SQLite并不是特别熟悉,但我认为你应该在create table语句中使用DECIMAL类型。更多细节:
Active Record SQLite Type Mapping
SQLite Types
但请注意this issue。似乎sqlite3 ruby驱动程序坚持为DECIMAL查询结果创建Float ruby对象而不是BigDecimal。