www.rtmj.net > C DouBlE输出几位

C DouBlE输出几位

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

我不太清楚你想问什么 不管什么编译器,都有 float占4个字节,即32位 double占8个字节,即64位 具体在输出中,一般情况小数点以后默认6位,但你可以通过输出函数printf控制,如printf("%.3f", 1.234);输出小数点后3位 具体有效数字位和小数部分的控制范围有编译器自身决定,也就是说不同的编译器,其输出有效位和小数位有所不同,你可以通过自己调式试探知道,如楼上所说的6~7、15~16是指的TC一类编译器,若是其他编译器很可能就不一样

double类型 32位 获取大小可以用 sizeof() 这是一个表达式并非函数 比如 a=3.14 sizeof(a)就等于4 同理 10.12等于5 如果是sizeof(int) 一般编译器等于4 具体可以百度sizeof()的用法

double占8个字节(64位)内存空间,最多可提供16位有效数字,小数点后默认保留6位.如全是整数,最多提供15位有效数字.测试代码如下,#include #include int main(int argc, char *argv[]){ printf("%lf\n",123456789012345678.789);//输

lf一般和double类型一起用吧,你想输出保留几位可以设置的,比如,printf("%.5lf",a)就是五位

基本上所有支持类型转换的语言,在高精度向低精度转换时会直接截取高位,所以低位会丢失 另外你的第二个printf里边的输出格式控制符是%f(正确的应该是%lf),而变量是long double,在截掉低位之后发生数据丢失,所以会产生第一个结果.你把long去掉当然是正确的结果,至于在mac上和其他电脑的区别,只是机器的问题,但是值并没有改变

float a=(float)3/667; //不可以象原写法,参与运算的数据都是整型数据,要保证至少其中之一是float型的.double b=3.0/667; //原写法会按照整型数据计算得到整型结果0,然后再转换成doubleprintf("%f\n%lf\n",a,b);

当然用字符串了,用字符数组来做

Float为单精度,内存中占4个字节,有效数位是7位(因为有正负,所以不是8位),在我的电脑且VC++6.0平台中默认显示是6位有效数字;double为双精度,占8个字节,有效数位是16位,

printf("%f",a); 只要前面定义是double形,输出就是double形

友情链接:qyhf.net | jmfs.net | zmqs.net | 2639.net | hyqd.net | 网站地图

All rights reserved Powered by www.rtmj.net

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