如何将BigDecimal转换为指数形式?

时间:2012-02-21 00:01:23

标签: java bigdecimal number-formatting exponential

如何将BigDecimal对象转换为使用指数形式的String表示形式?类似于:3.134e67?我查看了API,发现toEngineeringString(),但它没有给我我想要的东西。

3 个答案:

答案 0 :(得分:6)

您是否阅读过NumberFormat文档,这是来自DecimalFormat: 请参阅:http://docs.oracle.com/javase/1.4.2/docs/api/java/text/DecimalFormat.html

  

科学记数法

     

科学记数法中的数字表示为a的乘积   尾数和十的幂,例如,1234可以表示为   1.234 x 10 ^ 3。尾数通常在1.0 <= x <1的范围内。 10.0,但它不一定是。可以指示DecimalFormat进行格式化和解析   科学记法只能通过一种模式;目前没有工厂   创建科学记数法格式的方法。在一个模式中,   指数字符后紧跟一个或多个数字   字符表示科学记数法。示例:“0。### E0”格式   数字1234为“1.234E3”。

     
      
  • 指数字符后面的数字字符数给出最小指数位数。没有最大值。负   指数使用本地化的减号而不是前缀进行格式化   和模式的后缀。这允许诸如“0。### E0”之类的模式   米/秒”。

  •   
  • 解释最小和最大整数位数   一起:

         
        
    • 如果最大整数位数大于最小值   数字大于1,它强制指数为倍数   最大整数位数和最小数量   整数位被解释为1.最常见的用途是   生成工程符号,其中指数是倍数   三个,例如,“## 0。##### E0”。使用此模式,数字12345   格式为“12.345E3”,123456格式为“123.456E3”。

    •   
    • 否则,通过实现最小整数位数   调整指数。示例:0.00123格式为“00。### E0”   产量“12.3E-4”。

    •   
  •   
  • 尾数中的有效位数是。的总和   最小整数和最大分数,并且不受影响   最大整数位数。例如,12345格式为“## 0。## E0”   是“12.3E3”。要显示所有数字,请将有效数字设置为   零。有效位数不会影响解析。

  •   
  • 指数模式可能不包含分组分隔符。

  •   

答案 1 :(得分:2)

这对你有帮助吗?

BigDecimal bd = new BigDecimal(3.134e67);
String.valueOf(bd.doubleValue())

答案 2 :(得分:0)

你在找这样的东西吗?

YY ^ XX(模拟QQ)

int fastMod(int YY, int XX, int QQ){
    int ZZ;                                             //declare variables
    int RR = 1;

    while (XX != 0){                                    //while XX != 0
        ZZ = XX % 2;                                    //mod XX by 2
        XX= XX/2;                                       //divide XX by 2
        if (ZZ == 1)                                    //if ZZ is one
        RR = (RR * YY) % QQ;                            //mod (RR*YY) by QQ
        YY= (YY * YY) % QQ;                             //mod (YY*YY) by QQ     
    }
    return RR;                                          //return int
}

当您开始使用GIANT数字时,您将需要使用模运算。 当在RSA算法中生成大质数时,这变得特别有用。 模块化算法的基础知识包括: http://www.brainjammer.com/math/modular-arithmetic/