Java中DecimalFormat("0.0")输出逗号替代小数点如何强制用点分隔
DecimalFormat默认会读取JVM的默认区域配置(Locale)来决定小数分隔符样式,你当前的系统区域配置默认小数分隔符为逗号,所以会出现不符合预期的输出,可通过以下方案强制使用小数点作为分隔符:
方案1:自定义格式符号(最灵活,不依赖区域配置)
直接修改DecimalFormat的小数分隔符配置,不管系统区域是什么都会强制使用小数点:
import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; public class FormatTest { public static void main(String[] args) { // 自定义格式符号 DecimalFormatSymbols symbols = new DecimalFormatSymbols(); symbols.setDecimalSeparator('.'); DecimalFormat df = new DecimalFormat("0.0", symbols); System.out.println(df.format(10.4)); // 输出 10.4 System.out.println(df.format(100.5)); // 输出 100.5 System.out.println(df.format(3000.3));// 输出 3000.3 } }
方案2:指定小数分隔符为点的区域规则
直接选择原生用小数点作为小数分隔符的区域(比如美国区域Locale.US)来创建格式化工具:
import java.text.DecimalFormat; import java.text.NumberFormat; import java.util.Locale; public class FormatTest { public static void main(String[] args) { // 直接指定使用美国区域规则,小数分隔符默认为点 NumberFormat numberFormat = NumberFormat.getNumberInstance(Locale.US); DecimalFormat df = (DecimalFormat) numberFormat; df.applyPattern("0.0"); System.out.println(df.format(10.4)); // 输出 10.4 System.out.println(df.format(100.5)); // 输出 100.5 System.out.println(df.format(3000.3));// 输出 3000.3 } }
全局生效方案(可选)
如果需要整个项目都强制使用小数点作为小数分隔符,可以在JVM启动参数中添加以下配置:-Duser.language=en -Duser.region=US
如果是Maven项目,你可以在pom.xml的exec-plugin配置里添加该参数,或者在NetBeans的项目运行配置的VM选项中添加即可。
内容的提问来源于stack exchange,提问作者Space
相关产品推荐
相关产品推荐

