十进制值是零,当它应该是0.0X(Decimal Value is Zero when it sho

2019-10-20 08:44发布

如果这是以前谈过,我很抱歉,我的日子不好过搜索这一点。

我在计算折旧率。 我们计算的一个部分是在1月/生活。 我的表存储这种数据在decimal场。 我试图test = 1 / estimatedLife; 但计算的结果test (其被定义为一个decimal )为0。

说的估计寿命为36个月。 所以1/36应等于0.02777778。

什么我做错了什么想法?

顺便说一句,我改变了test ,以一张双人床和有同样的结果。

Answer 1:

尝试:

test = 1.0M / estimatedLife;


Answer 2:

另外内置的替代方法是Decimal.Divide :

test = Decimal.Divide(1, estimatedLife);

越写,但非常清楚的我说。



Answer 3:

您的代码划分两个整数,然后分配的结果(这也是一个整数)的decimal变量。

你需要切换到decimal通过使操作数的至少一个除法decimal ,如: 1.0M / estimatedLife



Answer 4:

estimatedLife是一个int,是不是。 尝试这个:

    decimal test = 1 / (decimal) estimatedLife;

或使用SwDevMan81的建议:

    test = 1.0M / estimatedLife;

问题是,整数除法扔掉小数点后的一切。 其中一个参数必须是让你得到你想要的结果小数。

该文档的链接 ,他在发表评论说:

如果你想有一个真正的数字文字被视为小数,使用后缀m或M

所以1.0M的意思是“一个文字型小数的具有值1.0”



Answer 5:

只需添加,如果你需要一个特定的精度(我注意到您的输出设置为8位小数),可以使用

decimal test = Math.Round(1M / estimatedLife,8);


文章来源: Decimal Value is Zero when it should be 0.0x