【发布时间】:2019-12-15 15:01:24
【问题描述】:
球体的体积是 (4/3)(pi)(r^3) 而不是 (1)(pi)(r^3)
为什么它会以整数计算 (4/3)?我希望明确声明的浮点变量以浮点数而不是整数进行计算。
我试过了:
float v = float(4/3) * 3.14159 * pow(r, 3);
我双浮动,它仍然没有浮动。
cout << " Calculate volume of sphere\n";
cout << " __________________________\n";
float r;
cout << " enter radius: ";
cin >> r;
float v = (4 / 3) * 3.14159 * pow(r, 3);
cout << " volume = " << v << "\n";
cout << 4 / 3; // 4/3 equals one? Are you kidding me?
我希望 4/3 等于 1.333,而不是 1。
【问题讨论】:
-
将
4 / 3更改为4.0 / 3.0 -
它是 C 或 C++ 表达式的基本属性;表达式的类型仅取决于表达式的操作数。不在任何外部背景下。 IMO 它使语言更容易理解。我喜欢知道
4/3始终是1,而不是FOO(4/3)可能会收到与BAR(4/3)不同的值。 -
因为整数计算在转换为浮点数之前。
-
使用最容易阅读的东西,直到它被证明太慢,但为了支持像 e 到 pi 的力量这样的噩梦,
pow可能是一个昂贵的功能。pow(r, 3)通常会比r*r*r贵得多。既然这个程序注定会受到用户交互的限制,那就无所谓了,但是当你写更多数学密集的程序时,要对pow保持怀疑 -
"为什么声明的浮点数部分以整数计算?"你的问题是mu。它没有。
标签: c++ types floating-point