亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

DecimalFormat數字格式化 0和# 的區(qū)別及說明

 更新時間:2021年10月12日 11:10:46   作者:Android濤  
這篇文章主要介紹了DecimalFormat數字格式化 0和# 的區(qū)別及說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

先來介紹一下“0”和“#”的區(qū)別

1. 以“0”補位時

如果數字少了,就會補“0”,小數和整數都會補;

如果數字多了,就切掉,但只切小數的末尾,整數不能切;

同時被切掉的小數位會進行四舍五入處理。

2. 以“#”補位時

如果數字少了,則不處理,不會補“0”,也不會補“#”;

如果數字多了,就切掉,但只切小數的末尾,整數不能切;

同時被切掉的小數位會進行四舍五入處理。

public class PriceUtil { 
    public static String decimalFormat(float value) {
        DecimalFormat decimalFormat;
        decimalFormat = new DecimalFormat();
        decimalFormat.applyPattern("0.##");
        return decimalFormat.format(value);
    }
 
    public static String decimalFormat(double value) {
        DecimalFormat decimalFormat;
        decimalFormat = new DecimalFormat();
        decimalFormat.applyPattern("0.##");
        return decimalFormat.format(value);
    }
 
    public static String decimalFormat(String value) {
        if(value==null||value.isEmpty())
            return "0.00";
        double d = Double.parseDouble(value);
        DecimalFormat decimalFormat;
        decimalFormat = new DecimalFormat();
        decimalFormat.applyPattern("0.##");
        return decimalFormat.format(d);
    } 
}

小結一下

1. “0”強制按格式對齊,“#”最充足的情況下以這樣的格式對齊;

2. “#”適用的場景是當小數位超過兩位時,只顯示兩位,但只有一位或沒有,則不需要補“0”;

3. 整數位用多個“#”沒有意義。

大家想用什么樣的格式,可以自己去組裝。

DecimalFormat 數據四舍五入格式化處理

最近的開發(fā)中,被測試的小伙伴告知,相同四舍五入處理邏輯的數據有一個有問題。當時的自己是懵逼的,我的處理方式是這樣的,業(yè)務要求是四舍五入保留兩位小數:

DecimalFormat d = new DecimalFormat("#0.00");
d.format(0.145d);

這樣的數據,期望結果是0.15,但是實際的結果是0.14,,,,,為什么呢?為什么呢?

問題探索

對此,各種尋找原因,終于有點眉目,這里做大概的說明,詳細的原因小伙伴們可以參考這篇文章

1.DecimalFormat 格式化數據,如果不指定方式,默認為HALF_EVEN,實際應該是HALF_UP;(HALF_EVEN 被舍位是5(如保留兩位小數的2.115),后面還有非0值進1(如保留兩位小數的2.11500001 格式化為2.12),5后面沒有數字或者都是0時,前面是偶數則舍,是奇數則進1,目標是讓被舍前一位變?yōu)榕紨?。HALF_UP:真正的四舍五入)

2. 使用BigDecimal時,參數盡量傳入字符串,要比傳入double精準.因為double的精度容易丟失;

結果

為了不大幅度的改動代碼,所以最后將數據格式化改為使用BigDecimal類型:

DecimalFormat d = new DecimalFormat("#0.00");
d.setRoundingMode(RoundingMode.HALF_UP);
Double.valueOf(d.format(new BigDecimal(String.valueOf(0.145d))));

因為時間問題,描述的比較簡單,以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Java 多線程優(yōu)先級實例詳解

    Java 多線程優(yōu)先級實例詳解

    這篇文章主要介紹了Java 多線程優(yōu)先級實例詳解的相關資料,需要的朋友可以參考下
    2017-04-04
  • Java實現七牛云文件圖片上傳下載

    Java實現七牛云文件圖片上傳下載

    本文主要介紹了Java實現七牛云文件圖片上傳下載,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Java并發(fā)編程之柵欄(CyclicBarrier)實例介紹

    Java并發(fā)編程之柵欄(CyclicBarrier)實例介紹

    這篇文章主要介紹了Java并發(fā)編程之柵欄(CyclicBarrier)實例介紹,柵欄類似閉鎖,但是它們是有區(qū)別的,需要的朋友可以參考下
    2015-04-04
  • java數據結構排序算法之樹形選擇排序詳解

    java數據結構排序算法之樹形選擇排序詳解

    這篇文章主要介紹了java數據結構排序算法之樹形選擇排序,結合具體實例形式分析了java樹形選擇排序的原理、實現技巧與相關注意事項,需要的朋友可以參考下
    2017-05-05
  • Object類toString()和equals()方法使用解析

    Object類toString()和equals()方法使用解析

    這篇文章主要介紹了Object類toString()和equals()方法使用解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • Spring之詳解bean的實例化

    Spring之詳解bean的實例化

    這篇文章主要介紹了Spring之詳解bean的實例化,文章內容詳細,簡單易懂,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2023-01-01
  • 關于在IDEA中SpringBoot項目中activiti工作流的使用詳解

    關于在IDEA中SpringBoot項目中activiti工作流的使用詳解

    這篇文章主要介紹了關于在IDEA中SpringBoot項目中activiti工作流的使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • Java中實現簡單的Excel導出

    Java中實現簡單的Excel導出

    今天小編就為大家分享一篇關于Java中實現簡單的Excel導出,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Spring bean 加載執(zhí)行順序實例解析

    Spring bean 加載執(zhí)行順序實例解析

    這篇文章主要介紹了Spring bean 加載執(zhí)行順序實例解析,分享了相關代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • Java中的CompletableFuture基本用法

    Java中的CompletableFuture基本用法

    這篇文章主要介紹了Java中的CompletableFuture基本用法,CompletableFuture是java.util.concurrent庫在java 8中新增的主要工具,同傳統(tǒng)的Future相比,其支持流式計算、函數式編程、完成通知、自定義異常處理等很多新的特性,需要的朋友可以參考下
    2024-01-01

最新評論