安全字符串到BigDecimal的转换

我正在尝试从字符串中读取一些BigDecimal值。假设我有以下字符串:“ 1,000,000,000.999999999999999”,我想从中获取一个BigDecimal。怎么做呢?

首先,我不喜欢使用字符串替换(替换逗号等)的解决方案。我认为应该有一些精巧的格式化程序为我完成这项工作。

我发现了DecimalFormatter类,但是它通过两次操作-损失了大量精度。

那么,我该怎么办呢?


HUH函数
浏览 584回答 3
3回答

婷婷同学_

看看setParseBigDecimal在DecimalFormat的。使用此设置器,parse将为您返回一个BigDecimal。

慕雪6442864

String value = "1,000,000,000.999999999999999";BigDecimal money = new BigDecimal(value.replaceAll(",", ""));System.out.println(money);完整的代码来证明没有NumberFormatException抛出:import java.math.BigDecimal;public class Tester {    public static void main(String[] args) {        // TODO Auto-generated method stub        String value = "1,000,000,000.999999999999999";        BigDecimal money = new BigDecimal(value.replaceAll(",", ""));        System.out.println(money);    }}输出量1000000000.999999999999999

ibeautiful

以下示例代码运行良好(需要动态获取语言环境)import java.math.BigDecimal;import java.text.NumberFormat;import java.text.DecimalFormat;import java.text.ParsePosition;import java.util.Locale;class TestBigDecimal {    public static void main(String[] args) {        String str = "0,00";        Locale in_ID = new Locale("in","ID");        //Locale in_ID = new Locale("en","US");        DecimalFormat nf = (DecimalFormat)NumberFormat.getInstance(in_ID);        nf.setParseBigDecimal(true);        BigDecimal bd = (BigDecimal)nf.parse(str, new ParsePosition(0));        System.out.println("bd value : " + bd);    }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java