如果这是以前谈过,我很抱歉,我的日子不好过搜索这一点。
我在计算折旧率。 我们计算的一个部分是在1月/生活。 我的表存储这种数据在decimal
场。 我试图test = 1 / estimatedLife;
但计算的结果test
(其被定义为一个decimal
)为0。
说的估计寿命为36个月。 所以1/36应等于0.02777778。
什么我做错了什么想法?
顺便说一句,我改变了test
,以一张双人床和有同样的结果。
如果这是以前谈过,我很抱歉,我的日子不好过搜索这一点。
我在计算折旧率。 我们计算的一个部分是在1月/生活。 我的表存储这种数据在decimal
场。 我试图test = 1 / estimatedLife;
但计算的结果test
(其被定义为一个decimal
)为0。
说的估计寿命为36个月。 所以1/36应等于0.02777778。
什么我做错了什么想法?
顺便说一句,我改变了test
,以一张双人床和有同样的结果。
尝试:
test = 1.0M / estimatedLife;
另外内置的替代方法是Decimal.Divide :
test = Decimal.Divide(1, estimatedLife);
越写,但非常清楚的我说。
您的代码划分两个整数,然后分配的结果(这也是一个整数)的decimal
变量。
你需要切换到decimal
通过使操作数的至少一个除法decimal
,如: 1.0M / estimatedLife
。
estimatedLife是一个int,是不是。 尝试这个:
decimal test = 1 / (decimal) estimatedLife;
或使用SwDevMan81的建议:
test = 1.0M / estimatedLife;
问题是,整数除法扔掉小数点后的一切。 其中一个参数必须是让你得到你想要的结果小数。
该文档的链接 ,他在发表评论说:
如果你想有一个真正的数字文字被视为小数,使用后缀m或M
所以1.0M的意思是“一个文字型小数的具有值1.0”
只需添加,如果你需要一个特定的精度(我注意到您的输出设置为8位小数),可以使用
decimal test = Math.Round(1M / estimatedLife,8);