double类型,小数点后的位数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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); //这就是保留两位小数的四舍五入

Java中Double类型设置指定保留小数点位数的方式

1、保留2位小数点,并且四舍五入

		BigDecimal b = new BigDecimal(546542.1214);
		double discount = b.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
		System.out.println("d = " + d);

2、保留2位小数点,并且四舍五入,此方法需要使用valueOf()进行转换

		String format = new DecimalFormat("######0.00").format(5432.125465);
        Double d = Double.valueOf(format);
        System.out.println("d = " + d);

以上是关于double类型,小数点后的位数的主要内容,如果未能解决你的问题,请参考以下文章

c语言如何控制小数位数?

c语言如何控制小数位数

java中double类型数组保留小数点后位数问题!!!!!

Java中Double类型设置指定保留小数点位数的方式

Single与Double分别能保留都少位小数?多少位数? 如题

Double 判断小数位数