我是靠谱客的博主 苗条未来,最近开发中收集的这篇文章主要介绍java字符串转换bigdecimal_安全字符串到BigDecimal转换,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

问题

我正在尝试从字符串中读取一些BigDecimal值。假设我有这个字符串:"1,000,000,000.999999999999999",我希望得到一个BigDecimal。这样做的方法是什么?

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

我找到了一个DecimalFormatter类,但是因为它运行的时间很长 - 大量的精度都会丢失。

那么,我该怎么做呢?

#1 热门回答(83 赞)

在DecimalFormat中查看setParseBigDecimal。使用此setter,parse将为你返回BigDecimal。

#2 热门回答(52 赞)

String value = "1,000,000,000.999999999999999";

BigDecimal money = new BigDecimal(value.replaceAll(",", ""));

System.out.println(money);

完整代码证明noNumberFormatException被抛出:

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

#3 热门回答(18 赞)

以下示例代码运行良好(需要动态获取区域设置)

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);

}

}

最后

以上就是苗条未来为你收集整理的java字符串转换bigdecimal_安全字符串到BigDecimal转换的全部内容,希望文章能够帮你解决java字符串转换bigdecimal_安全字符串到BigDecimal转换所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部