2011-03-03 47 views
-1

我從命令行得到輸入爲int d。現在我面臨這個問題:C - 如何劃分浮動?

float a,b; 
int d; 
float piece;  
printf("Please enter the parts to divide the interval: "); 
scanf("%d", &d); 

a=0; 
b=1; 

piece=b-a/(float)d; 
printf("%f\n",piece); 

所有我想要的是printf的依賴& d一些浮點數。例如當我在這裏寫5,我會得到0.20000,爲6-0166666,但我仍然得到所有數字1.000000,有沒有人知道解決方案?

+3

b - (0/d)== b == 1 – Erik 2011-03-03 15:57:41

+0

你能告訴我們你在哪裏聲明'piece'嗎? – 2011-03-03 15:57:45

+0

'd'在哪裏申報? – 2011-03-03 15:59:12

回答

2

使用括號:

piece=(b-a)/(float)d; 
+0

謝謝解決... – Waypoint 2011-03-03 16:07:49

1

我覺得這行: piece=b-a/(float)d;

應該是: piece=(float)(b-a)/(float)d;

只是我的2美分。

編輯

由於d是int,也許試試這個:

piece=(float)((b-a)/d);

+0

爲什麼要額外施放? 'a'和'b'已經是浮動的,所以'(a-b)'是一個浮動表達式。事實上,既然'd'會在這個表達式中被自動提升,那麼既不需要強制轉換。 – 2011-03-03 16:04:59

+0

謝謝解決... – Waypoint 2011-03-03 16:07:25

+0

@Fred Larson:我最初錯過了,只看到他們的初始化,所以假設他們是INTs。 – 2011-03-03 16:08:35

5

司擁有超過減法的優先級,所以你需要把減法放在圓括號內。你不必顯式投出d來浮動;通過它劃分浮動將促使它浮動。

piece = (b - a)/d; 
1

我相信你想:

piece = (b - a)/d; 

即,問題不是分裂,而是操作順序。