我有一個浮點,我想舍入或舍入到最近的整數。向上或向下舍入
例如:
1.4 = 1.0 1.77 = 2.0 1.1 = 1.0
等...
我在目標C這樣做,所以我想我需要一個標準數學函數...會在附近做什麼?
我有一個浮點,我想舍入或舍入到最近的整數。向上或向下舍入
例如:
1.4 = 1.0 1.77 = 2.0 1.1 = 1.0
等...
我在目標C這樣做,所以我想我需要一個標準數學函數...會在附近做什麼?
您可以使用math.h
中定義的任何標準C庫數學函數。 nearbyintf
會工作,如roundf
或ceilf
或floorf
,這取決於你想要什麼。
如果您選擇在編輯器中雙擊它們,Xcode將向您顯示這些功能的文檔(UNIX手冊頁)。
使用
double a = 2.3;
double b = round(a);
你可以找到全面,math.h中其他數學函數
老派的方式是添加0.5〜數,然後讓它截斷:
int x = (int) (someFloat + 0.5);
你的解決方案沒有考慮負數(如果是的話,你基本上會重寫'roundf'函數)。 – benzado
四捨五入非常容易實現,因爲將一個值作爲int
來截斷數字的小數部分。讓0 <= x < 1
。如果小數部分小於x
並且四捨五入到最接近的整數(如果小數部分大於或等於x
),那麼如果要將所有值舍入到最接近的整數,則只需要計算:
int roundedValueBasedOnX = (int) (value + (1 - x));
舉個例子,如果x = 0.2
,那麼我們有:
1)value = 9.4
,應該四捨五入到10
。
int roundedValueBasedOnX = (int) (9.4 + (1 - 0.2)) = (int) (9.4 + 0.8) = (int) (10.2) = 10;
2)value = 3.1
,應該輪3
。
int roundedValueBasedOnX = (int) (3.1 + (1 - 0.2)) = (int) (3.1 + 0.8) = (int) (3.9) = 3;
如果x = 0.7
,那麼我們有:
3)value = 9.4
,應該四捨五入爲9
。
int roundedValueBasedOnX = (int) (9.4 + (1 - 0.7)) = (int) (9.4 + 0.3) = (int) (9.7) = 9;
4)value = 3.8
,應該輪4
。
int roundedValueBasedOnX = (int) (3.8 + (1 - 0.7)) = (int) (3.8 + 0.3) = (int) (4.1) = 4;
希望有幫助!
每當四捨五入時,考慮負數是否可能。如果是這樣,傳統的int(int)(x + 0.5)可能不會做你想做的事情,並且循環函數可能會更好。例如,round(-1.5)= 2.
[Objective-C Float Rounding]的可能重複(http://stackoverflow.com/questions/4702408/objective-c-float-rounding)或[如何round關閉浮動值?](http://stackoverflow.com/questions/5594116/objective-c-how-to-round-off-float-values) –
@andrewx我低估了你的答案,原因我在評論中解釋。無論它是否「在許多書籍中教授」,您建議依靠鑄造是一個糟糕的建議。 – benzado