Java处理科学计数法数字方式
作者:又夏天
这篇文章主要介绍了Java处理科学计数法数字方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
Java处理科学计数法数字
Java中可以使用BigDecimal类来处理科学计数法表示的数字,并将其转换为不使用科学计数法的数字。
具体步骤如下:
1.使用BigDecimal类的构造函数
将科学计数法表示的数字转换为BigDecimal对象。
例如,将科学计数法表示的数字"1.23E+5"转换为BigDecimal对象,可以使用以下代码:
BigDecimal bd = new BigDecimal("1.23E+5");
2.使用BigDecimal类的toPlainString()方法
将BigDecimal对象转换为不使用科学计数法的字符串。
例如,将上面的BigDecimal对象转换为不使用科学计数法的字符串,可以使用以下代码:
String str = bd.toPlainString();
3.将字符串转换为需要的数字类型
例如:
将上面的字符串转换为double类型的数字,可以使用以下代码:
double num = Double.parseDouble(str);
完整的代码示例如下:
String sciNum = "1.23E+5"; BigDecimal bd = new BigDecimal(sciNum); String plainStr = bd.toPlainString(); double num = Double.parseDouble(plainStr); System.out.println(num);
输出结果为:
123000.0
java科学计数法表示数值
Background
- 大多数计算器及计算机程序用科学记数法显示非常大和非常小的结果;
- 但很多时候,我们需要做一个统一,要么全部以科学计数法输出,要么就全部显示为普通计数。
- 注意:这里对大于等于1的数据做了特殊处理,为了保证输出的结果展示形式是统一的。
- Const.java
package com.yunlu.groundwater.constants; import com.yunlu.groundwater.gwParameters.entities.*; import java.util.HashMap; import java.util.Map; public class Const { // tpl public static final String TPL_E1 = "%s+%s"; // fmt public static final String FMT_DOUBLE = "0.00E00"; }
/** * @param val 数值 * @return 返回科学计数法字符串 */ public static String scientificNotationString(Double val) { String res = new DecimalFormat(Const.FMT_DOUBLE).format(val); if (val >= 1) { int length = res.length(); String prefix = res.substring(0, length-2); String suffix = res.substring(length-2, length); res = String.format(Const.TPL_E1, prefix, suffix); } return res; }
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。