【问题标题】:How to add decimal point before x digits in Java如何在Java中的x位之前添加小数点
【发布时间】:2013-03-25 06:55:46
【问题描述】:

假设我有一个值 12345678 和一个数字 x=2,我希望最终输出为 123456.78,如果 x 的值为 4,则最终输出为 1234.5678。

请告诉我如何才能做到这一点?

【问题讨论】:

  • 除以 100.0 表示 X 2,除以 1000.0 表示 X 4
  • @Habib:我不认为将浮点引入其中一定是一个好主意(假设问题中的12345678int。)
  • @NPE:我认为将浮点数带入其中很好。我只是不会带浮动 binary 点。
  • @JonSkeet:我不了解你,但我还没有真正看到浮点 decimal 点的单一硬件实现。 :) 这有点像说我们不能通过使用移位运算符来计算 2 的整数幂,因为这假设一台二进制计算机而不是三进制计算机 (en.wikipedia.org/wiki/Setun) :)

标签: java formatter


【解决方案1】:

鉴于您正在处理移动小数点,我可能会使用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

【讨论】:

    【解决方案2】:
    BigInteger d = new BigInteger("12345");
    BigDecimal one = new BigDecimal(d, 3);//12.345
    BigDecimal two = new BigDecimal(d, 2);//123.45
    

    【讨论】:

      【解决方案3】:

      试试这个:

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

      【讨论】:

      • 我认为你必须一次又一次地解析数据,如果String
      【解决方案4】:

      将该值除以 10 的 x 次幂。

      【讨论】:

        猜你喜欢
        • 2022-01-12
        • 1970-01-01
        • 2021-01-16
        • 2013-09-02
        • 1970-01-01
        • 2022-11-14
        • 2017-12-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多