当前位置: 首页 > 面试题库 >

将BigDecimal格式化为String,最大2个十进制数字,在小数部分删除0

巫马化
2023-03-14
问题内容

我有一个BigDecimal数字,我只考虑它的2个小数位,所以我使用以下方法截断了它:

bd = bd.setScale(2, BigDecimal.ROUND_DOWN)

现在,我想将其打印为String,但是如果它为0,则删除小数部分,例如:

1.00-> 1

1.50-> 1.5

1.99-> 1.99

我尝试使用Formatter,formatter.format,但我总是得到2个十进制数字。

我怎样才能做到这一点?也许从bd.toPlainString()处理字符串?


问题答案:

我用DecimalFormat格式化BigDecimal而不是格式化String,似乎没有问题。

代码是这样的:

bd = bd.setScale(2, BigDecimal.ROUND_DOWN);

DecimalFormat df = new DecimalFormat();

df.setMaximumFractionDigits(2);

df.setMinimumFractionDigits(0);

df.setGroupingUsed(false);

String result = df.format(bd);


 类似资料:
  • 我有一个BigDecimal数字,我只考虑它的2个小数点,所以我用以下方法截断它: 我尝试使用格式化程序Formatter.format但我总是得到2个小数位数。 我怎么能这么做?也许正在处理bd.toPlainString()中的字符串?

  • 问题内容: 我是Java的新手,尝试使用BigDecimal(例如99999999.99)并将其转换为字符串,但没有小数位和尾随数字。另外,我不想在数字中加上逗号,也不需要四舍五入。 我试过了: 但不支持BigDecimal。 有任何想法吗? 非常感谢。 问题答案: 尝试

  • 问题内容: 我需要从随机整数(0-255)列表中创建一个十六进制数字字符串。每个十六进制数字应由两个字符表示:5-“ 05”,16-“ 10”等。 例: 我设法提出了: 但是,这看起来有点尴尬。有没有更简单的方法? 问题答案:

  • 问题内容: 我想将整数数字格式化为十六进制字符串。 打印,但我希望它作为。我怎么做? 问题答案: 试试这个

  • 如何转换“大”十六进制数(字符串格式): EC 851 A 69 B 8 ACD 843164 E 10 CFF 70 CF 9 E 86 DC 2 FEE 3 CF 6 F 374 B 43 C 854 E 3342 A 2 F 1 AC 3 E 30 C 741 CC 41 E 679 DF 6 D 07 CE 6 FA 3 A 66083 EC 9 B 8 C 8 BF 3 AF 05 D

  • 问题内容: 我在Python中有一些实例。我希望格式化它们 因此,请确保始终至少保留两个小数位,甚至可能更多。虽然不存在舍入到小数位的解决方案的短缺,但我找不到找到确保数字下限的整洁方法。 我当前的解决方案是计算: 并选择两者中较长的一个。但是,它似乎有些骇人听闻。 问题答案: 如果您希望避免出现字符串问题: 未经测试的代码,但它 应该可以 工作。 这是这样的: d = 12.345 100倍 1