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