[英]explicit type casting float(intvar) results in int
我嘗試了以下代碼:
#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
嗎?
該值不是整數,只是std::cout
會在此處嘗試為您提供緊湊的表示形式。 使用setfixed
和setprecision
(從#include <iomanip>
來強制上浮起一個特定的輸出精度。 第一前添加此cout
行:
cout << fixed << setprecision(6);
您需要指定floatPoint輸出的格式,例如:
cout << "\n float(intvar)=" << std::fixed << float(intvar);
摘自[The.C ++。Programming.Language.Special.Edition] 21.4.3 FloatingPoint輸出[io.out.float]:
浮點輸出由格式和精度控制:
–通用格式允許實現選擇一種格式,該格式以最能在可用空間中保留值的方式顯示值。 精度指定最大位數。 它對應於printf()的%g(第21.8節)。
–科學格式使用小數點和指數前的一位數字表示數值。 精度指定小數點后的最大位數。 它對應於printf()的%e。
–固定格式將值表示為整數部分,后跟小數點和小數部分。 精度指定小數點后的最大位數。 它對應於printf()的%f。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.