指点成金-最美分享吧

登录

单精度、双精度各有几位小数?

佚名 举报

篇首语:本文由小编为大家整理,主要介绍了单精度、双精度各有几位小数?相关的知识,希望对你有一定的参考价值。

单精度有6位小数,双精度有15位小数。

单精度数(float型)在32位计算机中存储占用4字节,也就是32位,有效位数为7位,小数点后6位。

双精度数(double型)在32位计算机中存储占用8字节,也就是64位,有效位数为16位,小数点后15位。

扩展资料:

单精度浮点数格式是一种计算机数据格式,在计算机存储器中占用4个位元(32 bits),利用“浮点”(浮动小数点)的方法,可以表示一个范围很大的数值。

C、C++中使用到的双精度浮点数(double)类型是在IEEE二进制浮点数算术标准(ANSI/IEEE Std 754-1985)中定义的。双精度浮点数(Double)用来表示带有小数部分的实数,一般用于计算机变成中定义变量,占用8个字节存储空间。

参考资料来源:百度百科-单精度浮点数

参考资料来源:百度百科-精度浮点数

参考技术A 单精度是七位小数,双精度是十五位小数。

1、单精度,也就是 float ,在 32 位机器上用 4 个字节来存储的;而双精度double是用 8 个字节来存储的,这是他们最本质的区别。

2、由于存储位不同,他们能表示的数值的范围就不同,也就是能准确表示的数的位数就不同。

精度是测量值与真值的接近程度。包含精密度和准确度两个方面。
每一种物理量要用数值表示时,必须先要制定一种标准,并选定一种单位 (unit)。标准及单位的制定,是为了沟通人与人之间对于物理现象的认识。这种标准的制定,通常是根据人们对于所要测量的物理量的认识与了解,并且要考虑这标准是否容易复制,或测量的过程是否容易操作等实际问题。
由于各种物理量的标准的制定是人为的,因此需要经过一个社会或团体的公认,才会逐渐为人们普遍采用。
参考技术B 不能只问有几位小数,他的存储方式是以二进制存储的
单精度只有16个二进制位双精度有64个二进制位
二进制位里面包含正负号,整数部分,小数点,小数部分
正负号和小数点占用二进制位数是定值
所以,当你的整数部分大的时候,小数部分就不能很精确
参考技术C 7位 16位

double类型,小数点后的位数

我有一个double类型的数据
Cstring aStr;
double a=1234.567890;
aStr.Format("%f",a);
SetDlgItemText(IDC_a,aStr);
输出结果是:
1234.567890
我希望输出1234.57,也就是保留两位并且四舍五入。
怎么办到?

double类型是双精度浮点数,占用8字节(Byte)即64位(bit),其精度是由32个bit的二进制尾数来确定的,因此准确精度是二进制精度而不是十进制精度,通常可以保证十进制小数点后15位有效精度和第16位的部分精度。

通过格式化方法输出double类型,可以控制小数点后的显示位数:aStr.Format("%.2f",a);在百分号后面加上.x 就是指定小数点后的显示位数。注意这种方法不是四舍五入,而是截断显示,1.239会显示为1.23;

如果需要四舍五入,在C/C++中没有专门的函数,你可以这样实现:aStr.Format("%.2f",a+0.005);再舍去位加上5,再截断的时候就等于是四舍五入了。

拓展资料:

Visual Basic 支持几种 Numeric 数据类型— Integer(整型)、Long(长整型)、Single(单精度浮点型)、Double(双精度浮点型)和 Currency(货币型)。与 Variant 类型相比,Numeric 类型占用的存储空间通常要少。

如果知道变量总是存放整数(如 12 )而不是带小数点的数字(如 3.57),就应当将它声明为 Integer 类型或 Long 类型。整数的运算速度较快,而且比其它数据类型占据的内存要少。在 For...Next 循环内作为计数器变量使用时,整数类型尤为有用。

如果变量包含小数,则可将它们声明为 Single、Double 或 Currency 变量。Currency 数据类型支持小数点右面 4 位和小数点左面 15 位;它是一个精确的定点数据类型,适用于货币计算。浮点(Single 和 Double)数比 Currency 的有效范围大得多,但有可能产生小的进位误差。

浮点数值可表示为 mmmEeee 或 mmmDeee ,其中 mmm 是假数,而 eee 是指数(以 10 为底的幂)。Single 数据类型的最大正数值为 3.402823E+38,或 3.4 乘以 10 的 38 次方;Double 数据类型的最大正数值是 1.79769313486232D+308 或 1.8 乘以 10 的 308 次方。用 D 将数值文字中的假数部分和指数部分隔开,就会导致将该值作为 Double 数据类型来处理。同样,用这种方式使用 E,也会导致将该值作为 Single 数据类型来处理。

参考资料:数据类型 百度百科

参考技术A

Cstring aStr;

double a=1234.567890;

aStr.Format("%2f",a);

SetDlgItemText(IDC_a,aStr); 

将输出改为%2lf,即保留小数点后两位

拓展资料

双精度浮点型,此数据类型与单精度数据类型(float)相似,但精确度比float高,编译时所占的内存空间依不同的编译器而有所不同,是double float数据类型,C/C++中表示实型变量的一种变量类型。

此数据类型与单精度数据类型(float)相似,但精确度比float高,编译时所占的内存空间依不同的编译器而有所不同,通常情况,单精度浮点数占4字节(32位)内存空间,其数值范围为-3.4E38~3.4E+38,;双精度型占8 个字节(64位)内存空间,其数值范围为-1.7E308~+1.7E308。

参考资料:双精度浮点型-百度百科

参考技术B double类型是双精度浮点数,占用8字节(Byte)即64位(bit),其精度是由32个bit的二进制尾数来确定的,因此准确精度是二进制精度而不是十进制精度,通常可以保证十进制小数点后15位有效精度和第16位的部分精度。

通过格式化方法输出double类型,可以控制小数点后的显示位数:
aStr.Format("%.2f",a);

在百分号后面加上.x 就是指定小数点后的显示位数。注意这种方法不是四舍五入,而是截断显示,1.239会显示为1.23
如果需要四舍五入,在C/C++中没有专门的函数,你可以这样实现:
aStr.Format("%.2f",a+0.005);

在舍去位加上5,再截断的时候就等于是四舍五入了。
参考技术C 把aStr.Format("%f",a);
换成aStr.Format("%.2f",a); 保留两位小数就行了本回答被提问者采纳
参考技术D printf("%.2f",a+0.005); //这就是保留两位小数的四舍五入

以上是关于单精度、双精度各有几位小数?的主要内容,如果未能解决你的问题,请参考以下文章