如何在Java中添加小数点前x位数字

4
假设我有一个值为12345678,还有一个数字x=2。我希望最终的输出结果是123456.78,如果x的值为4,则输出结果为1234.5678。
请告诉我如何实现这个需求?

3
将其除以100.0,得到X 2的结果;将其除以1000.0,得到X 4的结果。 - Habib
可能是 https://dev59.com/b3NA5IYBdhLWcg3wNa-T 的重复问题。 - Drogba
@Habib:我认为把浮点数引入其中并不一定是个好主意(假设问题中的12345678是一个int)。 - NPE
1
@NPE:我认为将浮点数引入其中是可以的。只是我不会引入浮点二进制 - Jon Skeet
@JonSkeet:我不知道你怎么看,但我实际上从未见过一个浮点十进制的硬件实现。 :) 这有点像说我们不能使用移位运算符计算二的整数次幂,因为这假定了一个二进制计算机,而不是三进制的(http://en.wikipedia.org/wiki/Setun):) - NPE
@NPE:谁说需要硬件实现了?BigDecimal是Java中浮点十进制数的表示方式,就像System.Decimal是.NET中的表示方式一样。 - Jon Skeet
4个回答

12

鉴于您需要移动小数点,我建议使用 BigDecimal

long integral = 12345678L;
int x = 4; // Or 2, or whatever
BigDecimal unscaled = new BigDecimal(integral);
BigDecimal scaled = unscaled.scaleByPowerOfTen(-x);
System.out.println(scaled); // 1234.5678

6
BigInteger d = new BigInteger("12345");
BigDecimal one = new BigDecimal(d, 3);//12.345
BigDecimal two = new BigDecimal(d, 2);//123.45

2

请试一下:

String data = "12345678";
    StringBuilder builder = new StringBuilder(data);
    int x = 4;
    builder.insert(builder.length() - x, ".");

    System.out.println(builder);

我认为如果是String类型的数据,你必须一遍又一遍地解析它。 - joey rohan

1
将该值除以10的x次方。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接