Anonymous
Anonymous asked in 電腦與網際網路程式設計 · 2 decades ago

關於C的float和double

當我執行程式時

他會出現 warning C4305: \'=\' : truncation from \'const double\' to \'float\'

請問是啥問題阿???

我把FLOAT改成double就不會出現了

#include<stdio.h>

void main()

{

float c,d,e,f,g;

int a,b;

a=1;

b=6;

c=49.0*48*47*46*45*44;

d=1*2*3*4*5*6;

e=c/d;

f=a/e;

g=b/e;

printf(\"大樂透頭獎的機率是%e\\n\",f);

printf(\"大樂透二獎的機率是%e\\n\",g);

2 Answers

Rating
  • Lv 7
    2 decades ago
    Favorite Answer

    C/C++裡有所謂的基本型態, 像整數, 小數, 字元. 整數裡又因範圍大小而分int和long. 小數也是一樣分為float和double. 在C/C++裡每一個數都有型態, 不管你是常數或是變數. 這樣C/C++才能判斷你的用法是否正確. 所以一般C/C++裡你在用整數常數時, C/C++會把這整數常數的型態設為int. 而你在用小數常數時, C/C++會把這小數常數的型態設為double.所以如果你的程式碼是:float f;f = 1.234;f的型態是float, 1.234的型態是double. double可以表達的範圍比float大. 所以有些小數在double裡可以表達, 但在float裡卻不行. 所以在compile時C/C++會告訴你這樣寫可能會有問題.解決方法有好多個,1. 把f改成一個double的變數即可, 例: double f;2. 可以自己把1.234轉型成個float, 例: f = (float) 1.234;3. 在用1.234時告訴C/C++這是float的1.234,  例: f = 1.234f;懂不懂?不懂請再問.

    Source(s): Myself
  • ?
    Lv 5
    2 decades ago

    float是4 bytes

    double是8 bytes

    兩者不相等

    當你宣告兩者皆為8 bytes時,當然就不會有問題了

    Source(s): 自己
Still have questions? Get your answers by asking now.