如何在 Java 中获取法语格式数字的两倍
How to get a Double of a French formatted Number in Java
我尝试获取以法式格式格式化的数字的双精度值。
所以文本 1 003,25 应该存储为值 (1003.25)。
public class NumberFormatTest {
public static void main(String[] args) throws ParseException {
String db = "1003.25";
String manualFRA = "1 003,25";
double numberDB = Double.parseDouble(db);
String ger = NumberFormat.getInstance(Locale.GERMAN).format(numberDB);
String fra = NumberFormat.getInstance(Locale.FRENCH).format(numberDB);
String eng = NumberFormat.getInstance(Locale.ENGLISH).format(numberDB);
double gerD = NumberFormat.getNumberInstance(Locale.GERMAN).parse(ger).doubleValue();
double fraD = NumberFormat.getNumberInstance(Locale.FRENCH).parse(fra).doubleValue();
double mfraD = NumberFormat.getNumberInstance(Locale.FRENCH).parse(manualFRA).doubleValue();
double engD = NumberFormat.getNumberInstance(Locale.ENGLISH).parse(eng).doubleValue();
System.out.println("From database: " + db);
System.out.println("\tGerman: " + ger);
System.out.println("\tFrench: " + fra);
System.out.println("\tEnglish: " + eng);
System.out.println("\nTo Database: ");
System.out.println("\tfrom German: "+ gerD);
System.out.println("\tfrom French: "+ fraD);
System.out.println("\tfrom manual French: "+ mfraD);
System.out.println("\tfrom Englisch: "+ engD);
}
}
From database: 1003.25
German: 1.003,25
French: 1 003,25
English: 1,003.25
To Database:
from German: 1003.25
from French: 1003.25
from manual French: 1.0
from Englisch: 1003.25
有没有人知道,为什么手动法语值是 1.0 而不是 1003.25?
我该如何解决?在实际程序中,值来自 TextField。
在此先感谢您的帮助!
法语格式文本中的 space 是 NO-BREAK SPACE
,而不是常规的 space。
如果您将字符串文字更改为 "1\u00a0003,25"
,它将起作用。
如果该文本来自外部来源,例如用户,那么您可以将 spaces 替换为不间断的 spaces,例如
parse(manualFRA.replace(' ', '\u00a0'))
我尝试获取以法式格式格式化的数字的双精度值。 所以文本 1 003,25 应该存储为值 (1003.25)。
public class NumberFormatTest {
public static void main(String[] args) throws ParseException {
String db = "1003.25";
String manualFRA = "1 003,25";
double numberDB = Double.parseDouble(db);
String ger = NumberFormat.getInstance(Locale.GERMAN).format(numberDB);
String fra = NumberFormat.getInstance(Locale.FRENCH).format(numberDB);
String eng = NumberFormat.getInstance(Locale.ENGLISH).format(numberDB);
double gerD = NumberFormat.getNumberInstance(Locale.GERMAN).parse(ger).doubleValue();
double fraD = NumberFormat.getNumberInstance(Locale.FRENCH).parse(fra).doubleValue();
double mfraD = NumberFormat.getNumberInstance(Locale.FRENCH).parse(manualFRA).doubleValue();
double engD = NumberFormat.getNumberInstance(Locale.ENGLISH).parse(eng).doubleValue();
System.out.println("From database: " + db);
System.out.println("\tGerman: " + ger);
System.out.println("\tFrench: " + fra);
System.out.println("\tEnglish: " + eng);
System.out.println("\nTo Database: ");
System.out.println("\tfrom German: "+ gerD);
System.out.println("\tfrom French: "+ fraD);
System.out.println("\tfrom manual French: "+ mfraD);
System.out.println("\tfrom Englisch: "+ engD);
}
}
From database: 1003.25
German: 1.003,25
French: 1 003,25
English: 1,003.25
To Database:
from German: 1003.25
from French: 1003.25
from manual French: 1.0
from Englisch: 1003.25
有没有人知道,为什么手动法语值是 1.0 而不是 1003.25? 我该如何解决?在实际程序中,值来自 TextField。
在此先感谢您的帮助!
法语格式文本中的 space 是 NO-BREAK SPACE
,而不是常规的 space。
如果您将字符串文字更改为 "1\u00a0003,25"
,它将起作用。
如果该文本来自外部来源,例如用户,那么您可以将 spaces 替换为不间断的 spaces,例如
parse(manualFRA.replace(' ', '\u00a0'))