有關c++的for loop一問

2011-09-29 2:19 am
如何用for loop去寫decrement是 -0.5?
以下是我寫:
for (count = 10.0;count >= 1.0; count -= 0.5)
printf("%d ", count);
但output出10 9 8 7 6.....1
之後我轉了"%f" 但output0.00000

而我想要的output是
10.000000 9.50000 9.00000 8.50000 8.00000 7.50000 ...

請問應該如何寫??
更新1:

先多謝兩位! 但如果份data裡面有: 一個係decimal number, 另一個係real number 即係同時出到係: 10 9 8 7 6 5 4 3 2 1 10.00000 9.50000 9.00000 ... 咁應該點做?

回答 (3)

2011-09-29 11:38 am
✔ 最佳答案
雖則c++/c可以用float做for的control variable,但一般而言係一個bad idea。(pascal直情唔淮用)
原因
(1)float唔係exact,例如以count>11.0,可能最後一個loop係11.000001,咁可能會做少一次。呢o的bug係唔易發現。
(2)用int,個compiled binary會有效得多,因用得for可能重復好多次,『小數』怕長計。

其實以邏輯而言,用得for心目中一定有個重複次數,用int合理。如果你真係要0.5,可以以數學方式解決,方法一,簡單formula,例如你的例子,for (count = 0;count >=9; count++) printf("%d ", 10- count0.5 );
(如果你真係想count down,formula係 count - (10-count)*0.5)
另外一個方法係另定義一個 variable,例如 MyVar,每個loop自行加減,亦同時解決你第二個問題,一個減1,一個減0.5。 例如 MyCount -= 0.5;
當然,你的問題二,也可同時用數學解決。
因不知你本身邏輯,其實看似你要的係個while loop多o的。你可以考慮一下。
2011-09-29 5:12 am
你未define count,用float或long。
2011-09-29 2:33 am
你係咪int 左個count?

個count 係real number,應該用float!


收錄日期: 2021-04-26 11:29:53
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20110928000051KK00508

檢視 Wayback Machine 備份