欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
單片機(jī)keil-c51語言乘除法和取膜超范圍問題(部分不適用于C)
[打印本頁]
作者:
bibi
時(shí)間:
2015-4-19 01:50
標(biāo)題:
單片機(jī)keil-c51語言乘除法和取膜超范圍問題(部分不適用于C)
注意:計(jì)算式,能不寫成一大行的就分開寫,只要保證了精度就可以了!!寫一大行有時(shí)候反而影響精度!
例如:unsigned long int X;
double AD;
AD=AD/50.0;
X=AD*5000.0000/1023.00;
最好先局部計(jì)算一下,X=AD*100/1023.00;
1。
浮點(diǎn)類型的不能做“模”運(yùn)算。
例如:float a=1234.56; a=a%10; 這是錯(cuò)誤的。只有整形才能做“模”int a=12345; a=a%10;
2.如果你想做普通的四則運(yùn)算。那肯定是浮點(diǎn)數(shù)的運(yùn)算。整形的除法叫取模,不是我們平時(shí)的除法,它是舍去了余數(shù),即小數(shù)部分。例如:int a=1; a=a/10; 結(jié)果會(huì)得到0;因?yàn)橹挥猩瘫槐A粝聛怼U_的是: float a=1; a=a/10; 得到結(jié)果是:0.1
3。四則運(yùn)算中常量之間
做除法是特別注意:要加小數(shù)部分
,不管它有沒有小數(shù)部分;例如:float a; a=12/36; 這是錯(cuò)誤的,
這是取商運(yùn)算,不叫“除法”,
只能得到0。正確的應(yīng)該是:float a; a=12.0/36.0; 加上小數(shù)點(diǎn)就對(duì)了,得到結(jié)果 0.3 。
a=90*1000.0/20.0;第一步運(yùn)算必須要有一個(gè)變量或常量是浮點(diǎn)型,后面的可以不用浮點(diǎn)數(shù)。C語言能自動(dòng)想高一級(jí)轉(zhuǎn)換類型。
平時(shí)我們應(yīng)該養(yǎng)成浮點(diǎn)數(shù)加小數(shù)點(diǎn)的習(xí)慣。常量也分?jǐn)?shù)據(jù)類型的。 “12”代表是非浮點(diǎn)型(整型int或字符型char)“12.0”則是浮點(diǎn)型(float)
4.
整形先乘法再除法,第一步乘法部分也不能超過左側(cè)最大范圍。
unsigned int a,char b=90; a=b*1000/3000.0; 計(jì)算結(jié)果a=8;因?yàn)閎*1000這里超過了a的最大范圍65536,取模后得到8。正確寫法:a=b*100/3000*10;這里可以得到a=30。
但是浮點(diǎn)數(shù)乘法再除法。就不會(huì)超范圍; a=b*1000.0/3000;a結(jié)果是30.
6.
對(duì)于不同類型的變量做計(jì)算時(shí),要考慮結(jié)果是否超過了左面被賦值變量類型的范圍
。
例如 unsigned int a,b=7; a=b+65536;得到的結(jié)果不會(huì)是65543,因?yàn)樗呀?jīng)超出了a的最大值 65536; 又如 a=b-65536;也不會(huì)得到負(fù)數(shù). a=b*65536;也超出計(jì)算式最大數(shù)據(jù)類型的范圍。因?yàn)槭怯?jì)算完之后才賦值為左邊的數(shù)據(jù)類型
可見:四則運(yùn)算要注意三點(diǎn)。1。數(shù)據(jù)類型。2.。精度問題 。 3。計(jì)算式超過最大數(shù)據(jù)類型范圍的問題,計(jì)算完之后才會(huì)賦值為左邊的數(shù)據(jù)類型。 特別是變量與常量的四則運(yùn)算加倍注意是否超范圍。
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1