我希望有人可以帮我解决一些错字问题吗?
我试图执行这个等式:
66 * (1 - Math.Exp((-1) / 42)) + 0.0 * (Math.Exp((-1) / 42))
这是人类正常的写作方式:
66 * (1-e^(-1/42) + 0.0 * (e^(-1/42)
我做错了什么,因为我总是得到0.0?
答案 0 :(得分:4)
通过在数字中明确使用小数位来告诉编译器您要使用浮点数:
66.0 * (1.0 - Math.Exp((-1.0) / 42.0)) + 0.0 * (Math.Exp((-1.0) / 42.0))
或指定类型:
66d * (1d - Math.Exp((-1d) / 42d)) + 0.0d * (Math.Exp((-1d) / 42d))
答案 1 :(得分:1)
你的师使用了2个整数。因此,-1 / 42 = 0.xxx由于整数(-1和42)而为0。您应该使用double
来获得正确的答案。
因此,这是有效的:double result = 66.0 * (1 - Math.Exp((-1.0) / 42.0) + 0.0 * (Math.Exp((-1.0) / 42.0)));
答案 2 :(得分:1)
你正在使用整数并且由于四舍五入而得到0。使用例如:
double r = 66 * (1 - Math.Exp((-1.0d) / 42.0d)) + 0*_whatever_;
关键是-1/42
舍入为0(整数),所以你的exp()最终为1.然而,double d = -1.0d/42.0d
会得到你所期望的。