
正文
c语言e格式输出结果不一样,c语言e输出怎么调整精度
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
C语言printf(%2.2e\n,1201.0),结果是1.20e+003,为什么是003而不是...
1、是这个结果 e是科学计数法 .2e保留两位小数 至于前面的2, 没实际用处。 这个是用来限制宽度的,你的实际输出宽度超过了2, 那这个就没意义了。
2、个字符,所以它不起作用,即使没有这个 2 也不影响结果;而后一个 2 表示显示 2 位小数,所以结果有“20”,如果把“.2”删去,结果就会有 6 个小数位。后面的符号 + 和三位指数都是编译器决定的,不能更改。
3、printf 的参数并不会自动做类型转换的。例子中格式串中有“%f”,编译器就会当后边的参数是个浮点数,它不做类型检查。
4、第一个问题,这可能与不同的编译器有关。第二个问题,这是格式。
相关问答
Q1: 精通c语言的亲们,为什么同样的运行,结果却是E,68而不是E,D呢?
程序2的运行中,d和e的值不同原因如下:D是用于表示双精度实数的方式,E则用于表示单精度实数。d的赋值语句中,除法是两个整型数字的运算,其结果没有小数位。
无需想得太多,你可以明显看到,二进制小数表达的数都是不同级别减半后的累加。与十进制的某些小数没有一一对应,显然转换必然会发生误差。
E表示用科学技术法,做为一个字符串或者是定义的宏。当变量E==0时候,此时把E当作表达式来看,表达式E的值为假,形如if(E)这样的语句不被执行。
什么是指数形式。在C语言中,指数形式的表示方法是通过指数符号“e”或“E”来表示一个数的科学计数法。使用指数形式的步骤。确定数值:首先要确定需要表示的数值,例如,现在要表示的数值是23456789X104。
因为循环要执行的话while的值不等于0,所以选择d。C语言:C语言是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。
Q2: c语言中C99和C89输出%10.3e的结果有什么不同
是这样的,\r是回车,表示把输入光标移到本行开头。\n是换行,表示把输入光标移到下一行。
应该是C89和C99吧,这两个标准的格式有些不同,再就是添加了不少东西进去了,一般C89的程序都可以在C99的平台上编译通过,但是C99的东西在C89的平台上就可能编译不过了。
举个简单例子:在标准C不支持变长数组,而GCC就可以支持,C89不支持任何位置定义变量,而GCC可以随处定义,即代码写到某处需要用一个变量即可就在那儿定义一个变量。
restrict数据类型不改变程序的语义。 如果某个函数定义了两个restrict指针变元,编译程序就假定它们指向两个不同的对象,memcpy()函数就是restrict指针的一个典型应用示例。
C 在 C89 中,main( ) 是可以接受的。Brian W. Kernighan 和 Dennis M. Ritchie 的经典巨著 The C programming Language 2e(《C 程序设计语言第二版》)用的就是 main( )。
Q3: 请问我的C语言代码计算结果为什么和教程不一样?
题主的代码,由于错误使用Size函数,而导致出错。 输入必须为标量。从size()函数是用于计算数组的大小,即输出该数组的 m行,n列的具体数值。
输入数据 Vi, Vo 你都定义成了浮点数类型,但是读入的时候是按 %d 也就是整型读的,这俩类型的二进制编码不统一,所以读到的数据就不对。读入的时候用 %f 就好了。
scanf的格式和你输入的不一样,把他改成scanf(%f %f,&a,&b); 逗号改成空格就行了。或者输入2,3也一样。
在double转换成int时,应当考虑到数值并不准确的问题,可以考虑自己要求的精度极限,比如是0.00000001,可以写成:printf(%d\n,(int)(a/pow(10,b-1)+0.000000005); 这样可以配合取整实现在那位上的四舍五入。
以右边的为准,左边的vc++0的编译器没有Dev-C++0的新,结果是5,6应该是因为i输出后再+1然后再输出了。
Q4: C语言同一段代码,同样的文件,编译器为什么运行结果不一样?
1、一般来说,C语言程序被编译为可执行程序后,每次都输出都是相同的,但有些特殊情况例外,比如,代码中引入了随机变量,并让它出现在输出结果中。
2、原因是代码被优化、平台不兼容。代码被优化:编译器在编译时能够进行优化操作,导致编译后的执行文件和运行的程序不一样,编译后的执行文件比源代码更高效。
3、由于对C 语言和C++ 语言 处理方法不一样,编译结果会不一样。即使编同一语言,用的编译开关选项不同,例如优化方法不同,编译结果会不一样。
4、问题 N变量没初始化 问题 数组a没初始化,数组中的内容是任意的。
5、C++中不允许隐式声明,使用一个函数前必须声明,而你没有#includestdio.h,因此编译器找不到printf函数的声明而报错。
Q5: c语言计算为什么结果不对
在double转换成int时,应当考虑到数值并不准确的问题,可以考虑自己要求的精度极限,比如是0.00000001,可以写成:printf(%d\n,(int)(a/pow(10,b-1)+0.000000005); 这样可以配合取整实现在那位上的四舍五入。
因为你FindMax函数中,循环体判断了谁是最大的,但没把比较值更新。也就是说你的程序每次比对的都是第一个score值,找到的自然就是最后一个比他大的值和序号了。
这是因为程序||的运算方式造成的,因为||运算时候有一个为真的时候,结果就是真,(++i) 是真,那么就不会再往后计算,所以后面的++j, ++k 都不会被执行。
C语言用for回圈算1!+2!+3!+4!+5! 我的程式为什么不对? 很明显s的值一直在变大,而不是你想要的求!1,!2,!3,!4,!5后再相加,每次计算的时候s的值都是在累乘的,所以最后的结果肯定会偏大。
c语言e格式输出结果不一样的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言e输出怎么调整精度、c语言e格式输出结果不一样的信息别忘了在本站进行查找喔。







