【发布时间】:2017-10-16 13:28:52
【问题描述】:
我必须找到函数f(x) = x / (1-x)^2 的结果,其中0 < x < 1。
该值只能格式化为6 小数位。
这是我的 C++ 代码:
float x; scanf("%f",&x);
printf("%.6f",x/((1-x)*(1-x)));
我在 Python 中也是这样做的:
x = float(input())
print ("%.6f" % (x/((1-x)**2)))
对于某些 x 值,两个程序给出不同的答案。
例如,对于x = 0.84567,
C++ 提供35.505867,Python 提供35.505874
为什么会这样?
根据解决方案,Python 的答案是正确的,而 C++ 的答案是错误的。
【问题讨论】:
-
浮点数没有对错,只是或多或少准确
-
顺便说一句,如果您确实关心准确性,那么您应该使用
doule而不是float -
哼。有趣的。如果你用手写的python指数怎么办?此外,来自
int main()的可编译示例和 python sn-p 的类似示例可能会让反对者远离。并从输入中读取:硬编码p。 -
欢迎来到浮点运算。检查这个问题:stackoverflow.com/questions/3846631/c-vs-python-precision
-
我猜,python 在底层使用 cmath,区别在于解析。 C++ 给出与 std::pow(1.f-p, 2.f) 相同的结果
标签: python c++ floating-point