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 数据类型来处理。

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

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2019-08-28

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。

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

本回答被网友采纳
第2个回答  推荐于2017-10-06
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,再截断的时候就等于是四舍五入了。
第3个回答  2008-06-01
把aStr.Format("%f",a);
换成aStr.Format("%.2f",a); 保留两位小数就行了本回答被提问者采纳
第4个回答  2008-06-01
printf("%.2f",a+0.005); //这就是保留两位小数的四舍五入
相似回答