通常,我們需要對最小貨幣粒度(如0.05)進行數量化。按特定步驟進行的Java四捨五入
我面對Java中的溢出問題,似乎已經解決了吧...希望你能查看它是否是一個正確的解決辦法...有出現在這個論壇以及其他解決方案...
public static float round(float input, float step) {
float a = Math.round(input/step) * step;
//Can't return "a" directly because of overflow problem in some cases
int b = Math.round(a * 100);
return (float) (float)b/100f; }
但這隻會爲2位小數步工作(如0.05),因爲我硬編碼100這裏...
什麼「溢出問題」? –
@Sumedh,我不會使用'float',除非我真的必須這樣做,它有高達10億倍於double的舍入誤差。 99%的時間使用'double'是更好的選擇。 –
@Peter:任何地方單詞「貨幣」出現,浮動和雙重是一個不錯的選擇 –