如果之前已经谈过,我很抱歉,我很难在此搜索。
我正在计算折旧率。我们计算的一部分是1 /月的寿命。我的表将此数据存储在decimal
字段中。我尝试了test = 1 / estimatedLife;
,但test
(定义为decimal
)的计算结果为0.
假设估计寿命为36个月。所以1/36应该等于0.02777778。
对我做错了什么的想法?
顺便说一下,我将test
更改为双倍,并得到了相同的结果。
答案 0 :(得分:5)
尝试:
test = 1.0M / estimatedLife;
答案 1 :(得分:5)
答案 2 :(得分:2)
您的代码将两个整数分开,然后将结果(也是一个整数)分配给decimal
变量。
您需要至少将其中一个操作数设为decimal
切换到decimal
除法,如下所示:1.0M / estimatedLife
。
答案 3 :(得分:2)
估计生命是一个int,不是吗。试试这个:
decimal test = 1 / (decimal) estimatedLife;
或使用SwDevMan81的建议:
test = 1.0M / estimatedLife;
问题是整数除法会丢弃小数点后的所有内容。其中一个参数必须是小数才能得到你想要的结果。
他在评论中发布的documentation link说:
如果要将数字实数文字视为十进制,请使用后缀m或M
所以1.0M表示“一个十进制类型的文字,值为1.0”
答案 4 :(得分:2)
只是要添加,如果你需要特定的精度(我注意到你的输出设置为8位小数)你可以使用
decimal test = Math.Round(1M / estimatedLife,8);