javadouble的精度
❶ java中double型如何控制有效数字输出位数或精度
//方法一
NumberFormat nFormat=NumberFormat.getNumberInstance();
nFormat.setMaximumFractionDigits(2);//设置小数点后面位数为悄察
System.out.println(nFormat.format(3.1415););
方法二
double d = 14.7155;
DecimalFormat df0 = new DecimalFormat("###");
DecimalFormat df1 = new DecimalFormat("###.0"态运李帆迟);
DecimalFormat df2 = new DecimalFormat("###.00");
System.out.println(df0.format(d));
System.out.println(df1.format(d));
System.out.println(df2.format(d));
double test = Math.round(d);
System.out.println(test);
❷ java double型数据精确值问题
java中double类型数据是用64位来表示的,精度肯定是有限的,在需要更高精度的运算过程中,有两种方法可供参考:1. 自己用超过64位来盯耐表示一个double类型,比如用100个byte[]来表示一个double(800bytes);这样的话,double的加减乘春轮除就需要自己实现一遍了。很多IT公司有这样的面试题。2. 用java自带的BigDecimal类可以方便做高精度的运算。(c++中是没有BigDecimal这种方面的类的,所以只能用第扒则信一种方法)
❸ 请问java中,Double类型和double有什么不同能否转换
Double是类double是基础数据类型。Double类型是double的包装类,在JDK1.5以后,二者可以直接相互赋值,称为自动拆箱和自动装箱。如果是这样,可以用Double中的方法,将包装类转为基本数据类型。
可以转换的。
❹ java中double类数组要怎样才能精确到有几位小数点
java中double类型是双精度浮空铅拆点数,占用8字节(Byte)即64位(bit),其精度是由32个bit的二进制尾数来确定的,因此准确精度是二进制精度而不是十进制精度,通常可以保证十进制小数点后15位有效精度和第16位的部分精度。其实这个不只是java存在,是由计算机二级制架构决定的。高激败精度浮点计算,最好是先转换为整数计算斗枣后再转为小数。相对精度比较好。
❺ java double和float的区别
1、内存结构
float和double的范围是由指数的位数来决定的。
float的指数位有8位,而double的指数位有11位,分布如下:
float:
1bit(符号位)
8bits(指数位)
23bits(尾数位)
double:
1bit(符号位)
11bits(指数位)
52bits(尾数位)
于是,float的指数范围为-128~+127,而double的指数范围为-1024~+1023,并且指数位是按补码的形式来划分的。
其中负指数决定了浮点数所能表达的绝对值最小的非零数;而正指数决定了浮点数所能表达的绝对值最大的数,也即决定了浮点数的取值范围。
float的范围为-2^128
~
+2^127,也即-3.40e+38
~
+3.40e+38;double的范围为-2^1024
~
+2^1023,也即-1.79e+308
~
+1.79e+308。
2.
精度
float和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,由于它是不变的,故不能对精度造成影响。
float:2^23
=
8388608,一共七位,由于最左为1的一位省略了,这意味着最多能表示8位数:
2*8388608
=
16777216
。有8位有效数字,但绝对能保证的为7位,也即
float的精度为7~8位有效数字
double:2^52
=
4503599627370496,一共16位,同理,
double的精度为16~17位
之所以不能用f1==f2来判断两个数相等,是因为虽然f1和f2在可能是两个不同的数字,但是受到浮点数表示精度的限制,有可能会错误的判断两个数相等!
❻ Java中的单双精度数据类型分别占几个字节
Java中的单双精度数据类型分别占几个字节?
这个挺好记的:
byte: 1Byte
char,short: 2Byte
int,float: 4Byte
long,double: 8Byte
另外关于单位的换算:
1Byte = 8 bit
1K=1024Byte
1M=1024K
1G=1024M
1T=1000G
希望能帮到你啊。
VB中的类型DOUBLE表示双精度浮,点数存储为几个字节
Double 数据类型
Double(双精度浮点型)变量存储为 IEEE 64 位(8 个字节)浮点数值的形式,它的范围在负数的时候是从 -1.79769313486232E308 到 -4.94065645841247E-324,而正数的时候是从 4.94065645841247E-324 到 1.79769313486232E308。Double 的类型声明字符是数字符号 (#)。
delphi中双精度数据类型是不是double
single----四字节的实数类型
double----双精度的实数类型(8字节的实数)
extended----10字节的实数类型
vb 怎么将数据类型写成双精度型
1、因为此数据类型的有效数字是16位,它是单精度实数(有效数字8位)精度的两倍,故而得名双精度实型数。
2、详细如下:
a)、Single 数据类型
Single(单精度浮点型)变量存储为 IEEE 32 位(4 个字节)浮点数值的形式,它的范围在负数的时候是从 -3.402823E38 到 -1.401298E-45,而在正数的时候是从 1.401298E-45 到 3.402823E38。
b)、Double 数据类型
Double(双精度浮点型)变量存储为 IEEE 64 位(8 个字节)浮点数值的形式,它的范围在负数的时候是从 -1.79769313486232E308 到 -4.94065645841247E-324,而正数的时候是从 4.94065645841247E-324 到 1.79769313486232E308。
计算机数据类型中单精度类型与双精度的定义与区别?
二者的取值范围和精度是不同的
float的精度是6位有效数字,取值范围是10的-38次方到10的38次方,float占用4字节空间
double的精度是15位有效数字,取值范围是10的-308次方到10的308次方,double占用8字节空间
java中什么数据类型占4个字节
int, float
一个是整型变量(-2147483648~2147483647),另一个是浮点型(3.40282*10^38~1.17549*10^-38)
c语言数据类型为何是双精度型
1、双精度,单精度指浮点型数,
双精度 叫 double 型, 单精度 float 型。
double 型 用 64位2进制存放,float 型 用 32位2进制存放。
所以,两种数 的 最大和最小 数值范围 不同,数的有效数字个数肢肆不同,也就是精度不同。
2、double 型 最大数值 1.7976931348623158e+308
最小正数数值 2.2250738585072014e-308
有效数字 十进制 15 位。
float 型
最大数值 3.402823466e+38F
最小正数数值 1.175494351e-38F
有效数字 十进制 6-7 位。
详细定义 见编译器 头文件 float.h
c#中整数类型数据int占几个字节?
int有好几历吵轿种:Int16 Int32 Int64
意义同名,分别占16位,32位,64位
8位一字节,所以分别占2字节,4字节,8字节
C#对整数做了基元类型:碰友
short映射Int16
int映射Int32
long映射Int64
int即Int32
即:4字节
整型数据为什么占据两个字节的内存?单精度实型为什么占据4个字节的内存?双精度为什么占据8个字节?
数据类型所占内存大小取决于实现。Microsoft Visual C++中,int占4字节,float占4字节, double占8字节。
换句话说取决于你的编译环境。Microsoft Visual C++这样,可能g就不是这样了
❼ java中double型如何控制有效数字输出位数或精度
java中 double 类型只是一个简单拍闭类型,是不能其输出位数及精度是固定的x0dx0a可以利用其它方袭旦裂法迟液进行位数输出,如:x0dx0a x0dx0a public static void main(String[] args) {x0dx0a // 1. 使用 String.format() 方法x0dx0a double data = 11.8982389283293;x0dx0a System.out.println(String.format("%.2f", data));x0dx0a x0dx0a // 2. 使用 printf 输出x0dx0a System.out.printf("%.2f", data);x0dx0ax0dx0a// 3. 使用 DecimalFormat 对象格式化x0dx0a DecimalFormat format = new DecimalFormat("#.00");x0dx0a System.out.println(format.format(data));x0dx0a }