簡體   English   中英

如何添加浮點數但將總數保持/包裝在0..1的范圍內?

[英]How to add floats but keep/wrap the total within the range 0..1?

我正在對幾個Alpha值進行一些動畫處理,並希望設置相對於參考值的值

obj1.alpha = refAlpha + 0.25f;
obj2.alpha = refAlpha + 0.75f;

例如,如果refAlpha是0.5,那么我希望obj2.alpha為0.25,而不是1.25。 有什么數學函數可以做到這一點?

mod運算符%將在包裝方面發揮作用。 (它適用於浮點數和整數)。

obj1.alpha = (refAlpha + 0.25f) % 1f
obj2.alpha = (refAlpha + 0.75f) % 1f

public static void main(String[] args) {
  System.out.println(1.25f % 1f); // --> 0.25
}

不幸的是,java並沒有完全實現mod的數學定義。 a % b返回(-b, b)范圍內的值,而不是[0, b) 如果您要減去值,則結果可能為負。 如果這是您擔心的用例,請考慮創建一個輔助函數來處理它:

public static float mod(float a, float b){
    return ((a % b) + b) % b;
}

這將使結果在[0,b)范圍內。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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