2014-10-06 33 views
-2

不显示我有以下对象 -导轨 - 十进制鉴于

Reckoner Load (0.2ms) SELECT "reckoners".* FROM "reckoners" WHERE 
    "reckoners"."id" = ? LIMIT 1 [["id", 2]] 
=> #<Reckoner id: 2, group: "test FTEProrated", description: "try new calc", 
    leave: 28, abscence: #<BigDecimal:7fab221cf438,'0.1E2',9(27)>, 
    created_at: "2014-10-06 15:56:10", updated_at: "2014-10-06 16:14:32", 
    FTEProRated: #<BigDecimal:7fab221ca1e0,'0.0',9(27)>> 

如果我正确地完成我的计算,FTEProRated应该是约0.8 - 但它显示为0.0。我哪里错了?

的计算是由控制器进行保存对象之前 -

在更新 -

pro_rate_this @reckoner 

...

def pro_rate_this(reckoner) 
    reckoner.FTEProRated = (260-reckoner.leave)/260 
end 
当我改变了计算的测试什么是

这一切似乎没问题 - 例如,这 -

def pro_rate_this(reckoner) 
    reckoner.FTEProRated = (260-reckoner.leave) 
end 

当reckoner.leave == 28时给出232的值。只有当值变为< 1时,它似乎是一个问题,尽管这可能是巧合。

+0

你是如何显示它的? – Mandeep 2014-10-06 16:53:54

+0

就像'%= @ reckoner.FTEProRated%>'在视图中 – RADan 2014-10-06 16:58:01

+0

FTEFroRated是您数据库中的一列吗?如果是这样,什么是列类型?如果没有,请向我们显示计算/分配它的代码。 – 2014-10-06 17:09:00

回答

-1

数学......如果你想让你的答案成为一个浮点数,那么确保你正在用浮点数除。

def pro_rate_this(reckoner) 
    reckoner.FTEProRated = (260-reckoner.leave)/260.0 
end 

看到分母在那里?只需将.0添加到260并报告。