我们正在进行财务计算.我发现这篇关于存储货币值为小数的帖子:十进制vs双! - 我应该使用哪一个?何时使用?
所以我将金额存储为小数.
我有以下计算:12.000*(1/12)= 1.000
如果我使用十进制数据类型来存储金额和结果金额,我得不到预期的结果
// First approach:
decimal ratio = 1m / 12m;
decimal amount = 12000;
decimal ratioAmount = amount * ratio;
ratioAmount = 999.9999999999999
// Second approach:
double ratio = 1d / 12d;
decimal amount = 12000;
decimal ratioAmount = (decimal)((double)amount * ratio);
ratioAmount = 1.000
// Third approach:
double ratio = 1d / 12d;
double amount = 12000;
double ratioAmount = amount * ratio;
ratioAmount = 1.000
Run Code Online (Sandbox Code Playgroud)
什么是最好的方法?每个人都在谈论金额/金钱必须存储为小数.