BigDecimal Java,如何在前面附加零

nfeuvbwi  于 2022-11-20  发布在  Java
关注(0)|答案(4)|浏览(345)

我的问题基本上是这样的:
在BigDecimal中使用一个值时,如何在随机数前面追加零?假设我希望有一个小于10的数字遵循完全随机的模式。现在我希望在该数字前面添加零,这样实际的数量加起来就是10个数字。
下面是一个例子:BigDecimal数字=新的BigDecimal(2353);
现在我想有这样的输出:0000002353
有没有一个函数可以将数字附加到BigDecimal类型上?我找不到。
我尝试使用while循环来检查数字是否小于10。但是我对BigDecimal的理解还不够好,无法将整数值与BigDecimal类型进行实际比较。提前感谢您的帮助!

xbp102n0

xbp102n01#

如果使用BigInteger(或任何整数类型,如intlong),则可以使用以下格式设置值的格式

String.format("%010d", BigInteger.valueOf(2353))

格式字符串中的前导0表示用0填充,后面的10是所需的长度...

2ic8powd

2ic8powd2#

BigDecimal是用来储存大型浮点数的。因为在浮点数中,0000002353和2353之间没有任何差异,所以没有合理的方法可以将前置0附加到BigDecimal,就像没有合理的方法可以将前置0附加到一般的float一样。根据您要寻找的行为,我建议使用String来存储您的数字,然后在您想要执行任何操作时转换为BigDecimal或从BigDecimal转换。
若要比较整数型别与BigDecimal,请先将变数转换为BigDecimal,然后呼叫BigDecimalcompareTo方法。更多信息请参阅this问题。

lqfhib0f

lqfhib0f3#

由于您对格式化数字感兴趣,因此可能需要查看DecimalFormat类,该类允许根据指定的模式格式化浮点数和整数。

BigDecimal num = new BigDecimal(2353);
        
DecimalFormat f1 = new DecimalFormat("0000000000");
DecimalFormat f2 = new DecimalFormat("0,000,000,000");
        
System.out.println(f1.format(num));
System.out.println(f2.format(num));
  • 输出:*
0000002353
0,000,002,353
6jjcrrmo

6jjcrrmo4#

如果最大位数为10,并且只允许整数,则只需使用long和标准格式即可:

long myNumber = 123456;
System.out.printf("%010d%n", myNumber);

相关问题