小数点(。)作为java应用程序中的分隔符和Oracle数据库中的逗号(,)分隔符

时间:2015-03-30 20:23:28

标签: java database decimal locale

问题不是那么容易解决。

  1. 使用以下代码

    Locale.setDefault(new Locale("fr", "FR"));
    

    浮动的格式为123 456,45,日期格式为30 mars 2015.

  2. 使用以下代码

    Locale.setDefault(new Locale("en", "US"));
    

    浮动格式为123,456.45,日期格式为2015年3月30日。

  3. 如何将默认Locale设置为123,456.45和30 mars 2015?我的意思是英语格式的浮动和法语格式的日期和其他属性?是否可以以法语格式设置Locale并仅将小数点分隔符更改为指向(。)?

    我想解决的问题如下: 我想用jdbcTemplate和float和date参数从java调用PL / SQL过程。数据库设置为点(。)为小数分隔符,逗号为组。 java应用程序使用默认的Locale设置为french(fr_FR)。但是在执行应用程序时,PL / SQL过程会引发错误,因为小数分隔符不同。日期格式在数据库和java应用程序中是相同的。我无法更改数据库设置。如何执行PL / SQL过程而不出错?

    感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

每次要格式化某些内容时,您都不必操纵默认LocaleNumberFormat类和DateFormat类都有静态方法来获取特定区域设置中的数字和日期格式化程序。

对于NumberFormat,请使用the getNumberInstance method that takes a Locale as a parameter

double value = 123456.45;
NumberFormat english = NumberFormat.getNumberInstance(new Locale("en", "US"));
System.out.println(english.format(value));

输出:

123,456.45

对于DateFormat,请使用the getDateInstance method that takes a Locale as a parameter

Date now = new Date();
DateFormat french = DateFormat.getDateInstance(DateFormat.MEDIUM, new Locale("fr", "FR"));
System.out.println(french.format(now));

输出:

30 mars 2015