www.rtmj.net > DouBlE输出的小数位数

DouBlE输出的小数位数

C语言中double默认输出 6 位小数.如果要控制输出小数位数,可以格式化输出.printf("%.3lf ", d); // "%.3lf" .3 则是输出 3 位小数.printf("%.4lf ", d); // "%.4lf" .4 则是输出 4 位小数 .C语言兼顾了高级语言的汇编语言的优点,相较于其

默认6位,不过可以通过程序控制为想要的位数;如: printf("%12.15lf\n",x);表示输出占12格的小数位数为15为的x的值; printf("%.8lf\n",x);表示输出小数位数为8为的x的值.

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,再截断的时候就等于是四舍五入了.

4字节

double b = XXX.XXX; int i = (b + "").split(".")[1].length(); System.out.print("小数点位数为:" + i);

以C语言为例,默认6位,不过可以通过“%lf”格式来控制输出的位数;如:printf("%.15lf\n",x);表示输出小数位数为15为的x的值.

C语言里面,默认%f是小数点后6位,如果想小数点后面16位,写成%.16lf 不会自动四舍五入的,double是一个近似值,通常没有办法做的很精确.通常能精确到小数点后面6位,也就是说超过6位可能就不准了.

public class T { public static void main(String[] args) { double a = 3.987; double b = a%1.0; int c = (int)(a - b); System.out.println("a="+a + " 整数部分="+c+" 小数部分="+b); } }

float 为单精度,有效数字为6~7double 为双精度,有效数字为15~16 但他们在输出时,小数点后都有6位小数.例如3.123456 但是在格式化输出时例外.如: main() { int a=15; float b=123.1234567; double c=12345678.1234567; char d='p'; printf

在计算时,可以使用floor函数+0.5来实现四舍五入.例如:double a = 13.45656789; double b; b = floor(a * 10000.000f + 0.5) / 10000.000f; /*保留小数点后四位*/在输出时,直接使用printf格式输出实现保留小数点后四位.例如:double a = 13.45656789; printf("%.4f",a); /*保留小数点后四位*/

友情链接:qwfc.net | rpct.net | bdld.net | whkt.net | ysbm.net | 网站地图

All rights reserved Powered by www.rtmj.net

copyright ©right 2010-2021。
www.rtmj.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com