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

來源:互聯網
上載者:User

標籤:java基礎   函數   float四捨五入   

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

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

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

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


import java.util.regex.Pattern;public class Test {/* * 判斷是否為整數 *  * @param str 傳入的字串 *  * @return 是整數返回true,否則返回false */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);  }}






著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.