簡體   English   中英

顯式類型轉換float(intvar)結果為int

[英]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會在此處嘗試為您提供緊湊的表示形式。 使用setfixedsetprecision (從#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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM