簡體   English   中英

Java 的 DecimalFormat 將不正確的十進制數解析為整數

[英]Java's DecimalFormat parses incorrect decimal number as integer

收到大家的問候。

我需要驗證一個文本對應一個數字。 項目語言環境是es_CO 我現在遇到的問題是,使用句點作為小數分隔符的文本被解析為整數,當它應該是一個錯誤時,因為在上述位置,小數分隔符是一個逗號。

例如:

  • 語言環境: es_CO
  • 模式: ###.###,##
  • 文字: 1.48
  • 結果數: 148.0

源代碼:

Locale defaultLocale = new Locale("es", "CO");
NumberFormat numberFormat = NumberFormat.getNumberInstance(defaultLocale);
DecimalFormat decimalFormat = (DecimalFormat) numberFormat;
decimalFormat.applyLocalizedPattern("###.###,##");
Number number = decimalFormat.parse("1.48"); // Here I would expect an exception to be generated.

感謝你給與我的幫助。

這似乎是 DecimalFormat 中的一個錯誤。 解決它的一種方法是使用Scanner

Locale defaultLocale = new Locale("es", "CO");
Scanner scanner = new Scanner("1.48");
scanner.useLocale(defaultLocale);
Number number = scanner.nextDouble();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM