为什么在C语言程序中计算1.0\/3.0*3结果不是1
1.0\/3.0在c语言中结果是0.3333333,那个3不是无穷的,是受限制的,所以乘以3后,不是1,而是0.9999999
C语言中进行浮点数的运算为什么1.0\/3.0*3不等于一??
先进行1除以3除不尽..有小数只是0.3333333333再*3得不到1的!!!
c语言精度问题
一个浮点数在存储时只能保证的有效数字是7位,固后面的数字是无意义的,因此并不准确的表示该数。我们应当避免在C语言中将一个很大的数和一个很小的数直接相加或者相减(C处理计算的能力不强),否则就会丢失“小的数”,举例来说:用C计算1.0\/3.0*3的结果结果可能并不等于1....
C语言里x\/3.0和1.0\/3*x的精度为什么不一样
因为x\/3.0只进行一次运算;而1.0\/3*x要进行两次,第一次得出1.0\/3,作为一个临时量,这个临时量有可能是在运行时才计算出来的,有可能是编译器在优化代码时已经得出,但是可以肯定的是这个量只是近似于0.3333...的一个值,因此第一次就产生了一个误差。第二次乘以x时这个误差就传递到了结果...
...c语言,书上有个地方不太懂。float型数据例子上说1.0\/3.0×3结...
学编程,就要按计算机的思考方式来思考。但凡整数和浮点数进行运算,全部强制转换为浮点数,然后再进行运算。1.0\/3.0*3 实际运算是 1.0\/3.0*3.0 然后按运算符的左结合性,先计算1.0\/3.0 然后再计算0.333333*3.0 实际编译器运算结果是1.00000 ...
c语言中d=1\/3*3.0;与d=1.0\/3*3;d=?有什么区别
d=1\/3*3.0;这时d=0,d=(1\/3)*3.0,这里1是整形,1\/3也是整形,等于0,所以0*3.0=0 d=1.0\/3*3;这时d=1,d=(1.0\/3)*3,这里1.0是浮点型,1.0\/3也是浮点型,等于0.333333再乘以3等于1.
为什么是0 程序设计
因为为计算的数据是实数,实际上是double,不存在整除问题,所以1.0\/3.0结果是0.333333……这里有个细节,c语言中实数是近似值,且指数形式存储,也就是说这里算出来的是约等于0.33,而不是精确地1\/3 然后该计算*了,也就是0.3333……*3.0,结果约等于1.0,但不是精确等于1.0。==是精确...
c语言,为什么输出是零
应该输入y = 1.0\/3才能得到你想要的结果 y=1\/2中,1和3都是int型,运算后的结果也是int型,所以显示为0 y=1.0\/2中,1.0为浮点型,所以运算后~~~你懂的 0.5
c语言中 float d=1\/3.+1.0\/3+1.0\/3 等于1.0为什么错了。
这是浮点运算的误差造成的。1\/3的实际值是0.333333...,即小数点后有无穷多个3,但电脑不可能精确储存这样的实数,否则再大的内存也不够保存一个数字!这样就必须规定浮点数的精度,float是单精度浮点数,可以保留7位有效数字(即0.3333333),因此把三个这样的数字加起来是不等于1的!只能说是约...
...1\/3);输出的是0.000000,而printf("%f",1.0\/3.0);输出的是0.333333...
C语言中的整数除法规则是返回结果的整数部分,比如1\/3 = 0.3333333 整数部分是0,所以 1\/3=0 4\/3 = 1.3333333 整数部分是1,所以 4\/3=1 而浮点数和double则是返回带小数部分的结果。