一个初级的C++疑问,为什么输出不一样...............................................................

//看代码,这是第一个
#include <iostream>
using namespace std;
int main()
{
for(int t=0;t<=30;t+=1){
cout << t <<endl;
}
return 0;
}//这个输出到30
/******************************第二个*************************/
#include <iostream>
using namespace std;
int main()
{
for(double t=0;t<=30;t+=0.1){
cout << t <<endl;
}
return 0;
}//为毛这个输出到29.9就停了???????????

因为double类型无法准确地表示0.1,而只能近似地表示为0.999999..9999x或者1.0000000....000x,这样当循环到29.9时,实际的值为29.9000000.000x,再自增0.1,为30.0000000...000x,这个值是要大于30的,因此不会输出,循环终止。
浮点型不可用大于/小于/等于号直接比较大小,而要设置一个阈值,当两个浮点数的差小于该阈值时,认为它们相等。否则,认为一个数大于或小于另一个数。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-03-18
把多个变压器初级串联,根据串联电路的分压原理,加在各个变压器初级上的电压肯定下降,毫无疑问,次级输出电压一定按比例下降。根据变压器的工作原理不难分析:初级与次级电压的比等于初级与级次匝数的比。
“同一个变压器不同的次级串联可以增加输出电压 ”----这要看是怎样串联的,要考虑相位问题。如果是同向串联,输出电压是升高的。因为这等于是把多个线圈合为一个,匝数多了,电压就升高了,很简单的道理,就像两个1.5V 的电池同向串联起来得3V一样。但如果是反相串联,输出的电压是下降的,道理就像两个1.5V的电池反向串联后总电压为0V一样。题外说一下,“变压器次级串联”一言指的是同向串联,就像说“电池串联”是指同向串联一样。
“多个变压器初级串联会降低次级输出电压”----这是不等同条件的对比得出的结论:只拿单个变压器的次级电压说事。“多个变压器初级串联”的等同对比是“多个变压器 次 级串联”:这时会发现,输出的总电压没有变。
相似回答