天天看點

java float四舍五入保留兩位小數_java基礎入門-float四舍五入保留兩位小數注意的地方...

float四舍五入保留兩位小數注意的地方

最近在codewars做了一道非常簡單的題目,但是它卻花了我20來分鐘,雖然最後解決了,但是中間發覺對于java的基礎實在不行,回去要好好補一下

不說這麼多,上題目:就是寫一個方法,把英裡每加侖換算成公裡每升,保留兩位數

一開始寫的時候是沒有問題,問題出現在保留兩位數那裡,我上一個測試代碼

import java.util.regex.Pattern;

public class Test {

public static boolean isInteger(String str) {

Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");

return pattern.matcher(str).matches();

}

public static void main(String[] args) {

System.out.println(((Math.round(2.5555f * 100) / 100)));

System.out.println(isInteger(((Math.round(2.5555f * 100) / 100))+""));

System.out.println((float) ((Math.round(2.5555f * 100) / 100)));

System.out.println((float) ((Math.round(2.5555f * 100f) / 100f)));

System.out.println(((Math.round(2.5555f * 100) / 100.0)));

}

}

輸出結果:

2

true

2.0

2.56

2.56

做題目的時候我是使用第二句

從結果那裡可以看見,其實是錯誤,需要的語句應該是第三第四句

這裡需要指出一個比較特殊的地方,在除100那個地方,如果隻是寫100,其實最後是把輸出的結果已經在背景轉為是整形,

是以,在最後處理除以100這裡,必須在100之後加上f或者.0表示最後需要轉化成float

最後的地方,我貼出那道題目的幾個答案,裡面包括了好幾種float四舍五入保留兩位小數的方法,大家可以參考一下

public class Converter {

public static float mpgToKPM(final float mpg) {

return Math.round(mpg * 1.609344f / 4.54609188f * 100f) / 100f;

}

}import java.math.BigDecimal;

public class Converter {

public static float mpgToKPM(final float mpg) {

return BigDecimal.valueOf(mpg * 0.35400604353).setScale(2, BigDecimal.ROUND_HALF_UP).floatValue();

}

}public class Converter {

private static final float LITER = 4.54609188f;

private static final float KILOMETER = 1.609344f;

public static float mpgToKPM(final float mpg) {

return Float.parseFloat(String.format("%.2f", mpg * KILOMETER / LITER ));

}

}import java.math.BigDecimal;

public class Converter {

public static float mpgToKPM(final float mpg) {

double a = (mpg * 1.609344 / 4.54609188);

BigDecimal bi = new BigDecimal(String.valueOf(a));

return (float)bi.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();

}

}public class Converter {

public static float mpgToKPM(final float mpg) {

float result = (float) (mpg*1.609344/4.54609188);

String s = String.format("%.2f", result);

return Float.parseFloat(s);

}

}

版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。