Java 将字符串转换为 BigDecimal

标签 java string type-conversion format bigdecimal

我必须将String(从Excel单元格读取)转换为BigDecimal,但我必须考虑:

  • BigDecimal 数字将有两位十进制数字,因此我必须以这种方式形成它
  • 原始字符串可以使用逗号(“,”)作为小数分隔符(这是我更大的问题,因为如果我写 BigDecimal num = new BigDecimal(rowCell); 并且 rowCell 将逗号作为小数分隔符我会异常(exception)...)

你能帮我吗? 预先感谢您

最佳答案

您需要按步骤进行:

  • 将逗号 , 替换为点 .
  • 从这个新字符串中获取一个BigDecimal
  • 使用 ROUND_DOWNROUND_UP 将其四舍五入到小数点后 2 位
<小时/>
String str = "123,456";                   // String 132,456
str = str.replace(',', '.');              // String 132.456
BigDecimal b = new BigDecimal(str);       // BigDec 132.456
b = b.setScale(2, BigDecimal.ROUND_DOWN); // BigDec 132.45

如果你连接你有:

String str = "123,456";                  
BigDecimal b = new BigDecimal(str.replace(',', '.')).setScale(2, BigDecimal.ROUND_DOWN);   
<小时/>

Working DEMO

关于Java 将字符串转换为 BigDecimal,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50943472/

相关文章:

python - 如果不关心语言环境,在 Python 中对字符串进行排序的最快方法是什么?

c - 2 个字符在 C 中缩短

r - 在 R 中将日期转换为文本

c# - 如何使用较长的分隔符优先于较短的分隔符来拆分字符串?

java - 为什么在下面的代码中从 int 转换为 float 时会丢失值?

基于Java文本的冒险游戏,我的主要方法下放什么

java - 为什么 Eclipse 无法看到 groovy.sql.Sql?

java - GAE/J - JPA 错误 - 类型 ("")不是实体的,但需要用于此操作

java - 如果列表中的最后一个元素比其他元素大,如何删除它?

javascript - Json 字符串结果用 JavaScript 计数