2013-03-20 107 views
-4

我想将数据库(int)存储在数据库中,原因是round问题。将货币/货币转换为Cent,反之亦然

将Double money值转换为cent的算法是什么?反之亦然?

+0

多一点细节/上下文会有所帮助。 – Whymarrh 2013-03-20 18:06:57

+0

您能提供一个存储货币值的示例吗? – 2013-03-20 18:07:15

+1

钱给分?从美元?你的意思是,乘以100和四舍五入? – 2013-03-20 18:07:16

回答

1

如果你有以下double值,

double allTheMoney = 123.54; // as in $123 + 54 cents 

您可以用得到它美分,

int allCents = (int)(allTheMoney * 100); 
// or using long 
long allCents = Math.round(allTheMoney * 100); 
+0

我比我更快... – ITroubs 2013-03-20 18:09:40

+0

唉,不可避免的比赛成为第一个答案。 – Whymarrh 2013-03-20 18:10:46

+0

@ITROUBS都不应该有IMO回答。如在,帮助吸血鬼警报。 – 2013-03-20 18:10:53

0

这是快速简便:

double val = 1.45; 
int cents = (int)(val * 100); 

int cents = (int)Math.round(val*100); 
+1

这不轮。由于存储浮点值的方式,实际的double值可能是1.4499999,这会将其转换为144美分。 – 2013-03-20 18:11:46

+0

我知道。这也是为什么没有人应该加倍努力的原因... – ITroubs 2013-03-20 18:12:36

+0

因此,如果我记得正确的话,使用'(val + 0.005D)* 100D'。 – 2013-03-20 18:14:18