我尝试了以下代码:
#include <iostream>
#include<conio.h>
using namespace std;
int main()
{
int intvar = 25;
float floatvar = 35.87;
cout << "intvar= " << intvar;
cout << "\n floatvar =" << floatvar;
cout << "\n float(intvar)=" << float(intvar);
cout << "\n int(floatvar)=" << int(floatvar);
_getch();
return 0;
}
float(intvar)
的结果将显示为25
有人可以解释为什么它仍然显示为整数而不是25.000000
?
答案 0 :(得分:3)
该值不是整数,只是std::cout
会尝试在此处为您提供紧凑的表示。使用setfixed
和setprecision
(来自#include <iomanip>
)强制浮点数的特定输出精度。在第一个cout
行之前添加此内容:
cout << fixed << setprecision(6);
答案 1 :(得分:0)
您需要指定floatingPoint输出的格式,例如:
cout << "\n float(intvar)=" << std::fixed << float(intvar);
From [The.C ++ .Programming.Language.Special.Edition] 21.4.3 FloatingPoint输出[io.out.float]:
浮点输出由格式和精度控制:
- 通用格式允许实现选择呈现的格式 最好保留空间价值的风格的价值 可用。精度指定最大位数。它 对应于printf()的%g(§21.8)。
- 科学的格式呈现 小数点前一位数和指数的值。该 precision指定小数点后的最大位数 点。它对应于printf()的%e。
- 固定格式呈现一个 值作为整数部分后跟小数点和小数 部分。精度指定了之后的最大位数 小数点。它对应于printf()的%f。