在java中,把一个double或者BigDecimal的小数转换为字符串时,经常会用科学计数法表示,而我们一般不想使用科学计数法,可以通过:
DecimalFormat a = new DecimalFormat("#,##0.00000000");
System.out.println(a.format(11111111.0000001000000001));
的方式来格式化输出字符串。
对于BigDecimal的小数,如果制定精度<=6, 则可以放心的使用其toString函数。但是对于>6的精度,有可能会使用科学计数法,查看器代码有如下判断:
long adjusted = -(long)scale + (coeff.length-1);
if ((scale >= 0) && (adjusted >= -6)){
非科学计数法的toString.
}
其中scale指BigDecimal的精度,
coeff对应使用BigInteger存储的值的toString字符串, coeff = intVal.abs().toString().toCharArray(),也就是说BigDecimal在对应精度下的整数值,例如BigDecimal ob = new BigDecimal(0.00000011), ob的精度为7, 则coeff="1";如果ob=new BigDecimal(0.10000011), 则coeff="1000001";如果ob=new BigDecimal(0.00000001), 则coeff="0";
http://blog.sina.com.cn/s/blog_5656b0020100cec7.html
分享到:
相关推荐
防止Double加double后形成科学计数法问题
在JSON序列化过程中,有时会遇到`double`类型数值在输出时被自动转换为科学计数法的情况。这是因为,当`double`类型的数值过大或过小时,为了节省存储空间和保持精度,JSON库(如Fastjson)通常会采用科学计数法进行...
通过启用 DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS 选项,可以将 JSON 中的浮点数转换为 Java 的 BigDecimal 类型,从而避免科学计数法的表示方式。 下面是一个示例代码,演示如何使用 ObjectMapper 将 ...
当需要将科学计数法的数字字符串转换成decimal时,这2种写法都报错: msg 8114, level 16, state 5, line 1 error converting data type varchar to numeric. select cast('0.12e+006' as decimal(18,2)); select ...
在Java中,当我们处理大数据时,例如Long类型或Double类型的数字,可能会自动转换成科学计数法的形式,例如1.23456789E10。这种自动转换可能会导致数据的精度丢失或难以阅读。因此,我们需要一种方法来避免这种自动...
在Java编程语言中,处理数字时,特别是在进行大数据计算或者显示时,可能会遇到科学计数法的表示形式。科学计数法是一种节省空间且方便表示极小或极大的数值的格式,例如1.23E+5代表123000。然而,在某些场景下,...
在计算机编程中,科学计数法常用于表示大数值,如浮点数,尤其是在内存有限或者数据传输时需要节省空间的场景。时间戳是另一种表示时间的方式,它是一个整数或浮点数,代表从1970年1月1日(UTC/GMT的午夜)开始所...
在Java编程语言中,处理数字数据时,有时我们需要将科学计数法表示的数值转换为普通格式的字符串,以便于阅读或输出。特别是在处理财务、科学计算或数据分析时,这种情况尤为常见。例如,当我们从Excel文件中导入...
4. **格式化输出**:使用`toPlainString()`方法可以得到不带科学计数法的字符串表示,而`toString()`则可能会使用科学计数法。 5. **转换类型**:如果需要将`BigDecimal`转换回`double`或`float`,可以使用`double...
此外,Java还支持科学计数法,这种表示方式可以有效地表示非常大或非常小的数值,例如3.4E-2代表0.034。 MySQL数据库则提供了多种小数类型,包括浮点型(FLOAT和DOUBLE)和定点型(DECIMAL)。浮点型小数使用科学...
Python中的浮点类型类似Java语言中的double 类型,是双精度浮点型,可以直接用十进制或科学计数法表示。十进制数形式,由数字和小数点组成,且必须有小数点,如123.332等;科学计数法形式,如:2.1E5、
在表示浮点数时,可以用十进制形式或者科学计数法,如123e3或123E3。 2. 字符类型:char类型,占用2个字节,使用Unicode字符集,能表示从0到65535的Unicode码点,包括各种字符和符号。字符常量用单引号括起,如'a'...
浮点数可以使用十进制、科学计数法表示,例如,`float f = 1.23f;`,`double d = 1.23d;`。 2. 布尔类型:boolean,仅有的两个值是true和false,用于逻辑判断,例如,`boolean flag = true;`。 3. 字符类型:char...
4. **科学计数法表示**:以 `E` 或 `e` 结尾,表示科学计数法,如 `3.45E22` 表示 `3.45 × 10^22`,`3.45E-22` 表示 `3.45 × 10^-22`。 需要注意的是,由于浮点数的二进制表示方式,有些十进制的小数在转换为二...
浮点型常量有两种表示形式:十进制数形式和科学计数法形式。浮点型变量的类型有 float 和 double 两种。float 类型用于表示小数,所表示的数据范围为 -3.4e38 到 3.4e38。double 类型用于表示更大的浮点数,所表示的...
基础的科学计算功能包括但不限于:加法(+)、减法(-)、乘法(*)、除法(/)、指数运算(^)、对数运算(log)、平方根(sqrt)以及科学计数法等。为了实现这些功能,我们将在Java中创建一个类,可能命名为`...
float 和 double 是 Java 中两种基本数据类型,都是用来表示实数的,但是它们有很大的区别。float 是单精度类型,精度是 8 位有效数字,取值范围是 10 的 -38 次方到 10 的 38 次方,float 占用 4 个字节的存储空间...
` 不合法,科学计数法默认为 `double` 类型。 - `float foo=2.02f;` 合法,明确指定了 `float` 类型。 - `float foo=3.03d;` 不合法,明确指定了 `double` 类型,不能直接赋值给 `float` 类型。 - `float foo=0x...
浮点数可以使用小数点或科学计数法表示。例如: ```java float floatValue = 123.45f; doubledoubleValue = 987654321.1234567; ``` 需要注意的是,浮点数之间的比较不能直接用`==`,因为存在浮点误差。 总的来说,...
浮点数可以以十进制、科学计数法(例如`1.23e4`)或十六进制(前缀0x)表示,如`3.14f`表示`float`类型的圆周率,`1.234d`表示`double`类型的数值。 在Java中,这些基本数据类型具有固定的大小和精度,不依赖于目标...