C語言浮點型數據不準確,無法判斷相等
浮點數據無法比較相等的原因是由于計算機內部使用二進制表示浮點數,但是在二進制下表示的浮點數并不是精確的,導致在比較浮點數大小時可能會出現誤差。例如,0.1在二進制下表示不是精確的,因此使用浮點數進行比較時可能會出現0.1不等于0.1的情況。
解決辦法有以下兩種:
1.使用“近似相等”比較方法:在比較兩個浮點數是否相等時,可以將它們之間的差值與一個較小的閾值進行比較,如果差值小于閾值,則認為它們是近似相等的。
2.使用十進制表示法:將浮點數轉換為十進制數后進行比較,這種方法可以避免二進制表示下的精度誤差,但是會降低計算速度和增加內存使用。
float value_read_AIN3;
float vp;
if((unsigned int)(value_read_AIN3*100)==(unsigned int)(vp*100))
作者QQ4577105

浙公網安備 33010602011771號