最简单的方法是使用a
BigDecimal解析或输出科学计数法字符串。
您可以执行以下操作:
BigDecimal bd = new BigDecimal("1.86E+6");BigInteger bi = bd.toBigInteger();并反向:
bd = new BigDecimal(bi);String s = bd.toString();
更新资料
如果需要更多用户定义的输出,则可以使用
NumberFormatter。不要忘记设置
Locale喜欢的东西
Locale.ROOT,所以你不会得到,说逗号作为小数点分隔符(这是我第一次了,在德语区域)。例:
// Create a large, ugly number. BigInteger bi = BigInteger.valueOf(1001).pow(345); // Convert to scientific notation using invariant Locale.ROOT NumberFormat formatter = new DecimalFormat("0.######E0", DecimalFormatSymbols.getInstance(Locale.ROOT)); String str = formatter.format(bi); System.out.println(bi); System.out.println(); System.out.println(str); // No need for a formatter here. BigDecimal bd = new BigDecimal(str); BigInteger output = bd.toBigInteger(); System.out.println(); System.out.println(output);输出为:
14117465346422473869266828956536055055941560076453195848564549858245769090306511724022581458806808478312104648299184900101668110790029727269370576230739941295756403721542377676524345471018858301889587238685728698833657381433536351514768807473443480107060729865351857489829644237936941400858917912209727918821783232356498771195545416635992957878247457113883101655879913418071605117410760297684042828778561159429065368661891812555141973374185979366443907302175257231152310141478498874460404449693368849061582935212917481342173140058899494843206027203717899148936397952548848005208731916971590412805910464039282903509485053887030367122265061366423059607167641248369473629327204185542901959950021142336751965432334025473575773873368059728429867664163814317270780442331398766129832060513718517733918824279296013116955756603712271052363752137824695133499530175242999263226173240528036345762831538788960937393158730952609718119678289412196511493705666398394024980881857214329574087466691591070500356867121745486580017771495712789545993403450011.411747E10351411747000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
(是的,BigIntegers可能很笨拙)。
我不知道您的价值有多大,但是以上这些在我的Mac上都能正常使用。当然,只用十进制数字表示的科学计数法会损失很多精度。



