日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

精简jdk包_具有JDK 12精简数字格式的自定义精简数字模式

發布時間:2023/12/3 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 精简jdk包_具有JDK 12精简数字格式的自定义精简数字模式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

精簡jdk包

帖子“ 緊湊數字格式出現在JDK 12中 ”已經成為有關Java subreddit線程的討論主題 。 在那個線程中表達的與緊湊數字格式表示有關的問題涉及顯示的精度數字和顯示的緊湊數字模式。 可以通過使用CompactNumberFormat.setMinimumFractionDigits(int)來解決精度數字問題,該方法在“ 使用JDK 12緊湊數字格式使用最小分數數字 ”一文中進行了詳細討論。 這篇文章解決了第二個問題(不喜歡某些語言在預先構建的CompactNumberFormat實例中使用的緊湊模式)。

據我所能確定的(當然我可能會遺漏一些東西), CompactNumberFormat上沒有任何方法可以在現有CompactNumberFormat實例上設置緊湊數字模式。 但是,如果使用CompactNumberFormat的構造函數獲取CompactNumberFormat的實例(而不是使用NumberFormat的重載靜態工廠方法之一),則可以通過該構造函數將緊湊數字模式提供給CompactNumberFormat的新實例。 這在下一個代碼清單(也可以在GitHub上 )中得到證明。

/*** Provides an instance of {@code CompactNumberFormat} that has been* custom created via that class's constructor and represents an* alternate Germany German representation to that provided by an* instance of {@code CompactNumberFormat} obtained via the static* factory methods of {@code NumberFormat} for {@code Locale.GERMANY}.** @return Instance of {@code CompactNumberFormat} with customized* alternate German compact pattern representations.*/ private static CompactNumberFormat generateCustomizedGermanCompactNumberFormat() {final String[] germanyGermanCompactPatterns= {"", "", "", "0k", "00k", "000k", "0m", "00m", "000m", "0b", "00b", "000b", "0t", "00t", "000t"};final DecimalFormat germanyGermanDecimalFormat= acquireDecimalFormat(Locale.GERMANY);final CompactNumberFormat customGermanCompactNumberFormat= new CompactNumberFormat(germanyGermanDecimalFormat.toPattern(),germanyGermanDecimalFormat.getDecimalFormatSymbols(),germanyGermanCompactPatterns);return customGermanCompactNumberFormat; }

上面的代碼清單中有三項值得特別強調:

  • CompactNumberFormat(String, DecimalFormatSymbols, String[])構造函數允許將String數組傳遞到實例以指定緊湊數字模式。
  • 定義緊湊數字模式的String[]的性質在Javadoc中的CompactNumberFormat類中定義 ,該狀態指出:“緊湊數字模式以一系列模式表示,其中每個模式用于格式化一系列數字。”



    • 相同的Javadoc提供了一個基于美國語言環境的示例,該示例提供了10 0到10 14范圍內的這些值,而我在此處采用的就是該示例。
    • 可以提供多于或少于15個樣式,但第一個提供的樣式始終對應于10 0 。 Javadoc指出:“可以有任意數量的模式,它們嚴格基于索引,范圍從10 0開始 。”
    • 為了在此進行演示,我根據對前面引用的subreddit線程的觀察來調整了模式。 我對德語了解不多,但是基于SI的后綴的論點很有道理,無論如何這僅出于說明目的。
  • 在此示例中,我從JDK為德國德語語言環境( Locale.GERMANY )提供的DecimalFormat實例中檢索了CompactNumberFormat構造函數的其他兩個參數。 這確保了我的CompactNumberFormat German實例的德國德語德語實例的小數模式和十進制格式符號將與與JDK提供的實例相關聯的十進制模式和十進制格式符號相同。
  • 上面的代碼清單顯示了對一個名為acquireDecimalFormat(Locale)的方法的調用,以獲取JDK為Locale.GERMANY提供的DecimalFormat實例。 為了完整起見,接下來顯示該方法。

    /*** Provides an instance of {@code DecimalFormat} associated with* the provided instance of {@code Locale}.** @param locale Locale for which an instance of {@code DecimalFormat}* is desired.* @return Instance of {@code DecimalFormat} corresponding to the* provided {@code Locale}.* @throws ClassCastException Thrown if I'm unable to acquire a* {@code DecimalFormat} instance from the static factory method* on class {@code NumberFormat} (the approach recommended in the* class-level Javadoc for {@code DecimalFormat}).*/ private static DecimalFormat acquireDecimalFormat(final Locale locale) {final NumberFormat generalGermanyGermanFormat= NumberFormat.getInstance(locale);if (generalGermanyGermanFormat instanceof DecimalFormat){return (DecimalFormat) generalGermanyGermanFormat;}throw new ClassCastException("Unable to acquire DecimalFormat in recommended manner;"+ " presented with NumberFormat type of '"+ generalGermanyGermanFormat.getClass().getSimpleName()+ "' instead."); }

    上面顯示的代碼片段演示了當不希望在給定Locale類的實例中關聯的緊湊數字模式時,如何為CompactNumberFormat的給定實例定制緊湊數字模式。 如果CompactNumberFormat類上有一個方法可以覆蓋與通過NumberFormat靜態工廠類獲得的現有實例相關聯的部分或全部緊湊型數字模式, 那就很好了 ,但是JDK 12已經進入了下降階段2 。

    翻譯自: https://www.javacodegeeks.com/2019/01/number-pattern-compact-number-formatting.html

    精簡jdk包

    總結

    以上是生活随笔為你收集整理的精简jdk包_具有JDK 12精简数字格式的自定义精简数字模式的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。