1樓:HOOCCOOH
首先假設題主需要這個差值的十進位制表示。
根據 IEEE754 ,浮點使用的二進位制表示法必定在十進位制下有限位數,直接用 printf 指定位數列印即可。
唯一需要注意的是到底需要打多少位才夠。我們知道浮點在計算機中表示為 ,其中 為尾數字數, 為浮點指數。又由於 0)" eeimg="1"/>在十進位制下恰好有 位小數,故可以知道,對於乙個浮點數,小數字數最多只有 位(注意指數的符號,負值越大,小數越多)。
#include
#include
#include
intmain
(void
)於是就列印出來浮點表示法中 0.1 的精確值了,這裡比較方便,去掉第乙個 1 就是差值,此處略去不表。如果考慮其他數值,捨入也可能比實際值小(比如 0.
7),這時就需要手寫個高精度減法求差了。
補充:對於任意十進位制小數的泛化版本:
#include
#include
#include
#include
#include
#include
char
*dec_float_delta
(char
const
*dec)if
(is_neg
)buf[0
]='-';
return
buf;
}int
main
(void);
for(
size_ti=
0;i tests /sizeof *tests;++ i)return0; }執行輸出: 0.1 +0.000000001490116119384765625 0.7 -0.000000011920928955078125 0.114514 +0.000000000713825225830078125 0.5 +0.000000000000000000000000 2樓:Zcxsythenew #include intmain (void )else }// 現在,需要比較 b 的值,以及 0.1 乘 2 的 a 次方的值 // 也就是比較 10*b 的值,以及 2 的 a 次方的值// 現在你知道怎麼做了嗎? // --- Answer ---b*= 10;i= a;while(i )// 現在 b = 0.1f * 10 * 2^a// 且 temp = 0.1真 * 10 * 2^a = 2^a// 所以 (0. 1f - 0.1真) * 10 * 2^a = b - temp // 所以 0.1f - 0.1真 = (b - temp) / (10 * 2^a) printf ("(b - temp) = %lld \na = %lld\n" ,b-temp,a );// 把 (b - temp) 和 a 的值求出來之後,// 填入上面的分式即可。 // 當然,你也可以適當改變 printf 的內容// 使它直接輸出你想要的式子。 return0;} 3樓:Hawaii 那要看你想要的是乙個大致結果,還是精確結果了 大致結果直接用x-0.1就能得到,因為常量0.1是double型別,兩者的差就是double型別和float型別之間的精度差距 精確結果,先按IEEE 754標準還原出尾數M和階碼E,再按迴圈除2方式使用高精度十進位制除法將M轉換為10進製數,最後使用高精度十進位制減法求出結果與0.1的差值。 4樓:山楂山楂片 這可能是double的: 0.不過我也不太清楚怎麼用C語言寫出來,剛才那個是Python列印0.1,然後去掉開頭的1的結果。 杜紫童 各位之和是4的數字,只有形如以下幾種的數可以滿足 考慮到需要的是素數,並且大於2的素數都是奇數,所以可以把其中的偶數都排除掉,現在只剩下5種 1331 121211 1111 遍歷,不斷向各個位之間插入0,即可產生一系列的數,然後判斷它們是否是素數。舉個例子,對於121 1211021 10... 冷月i include include int main printf printf n printf printf n printf printf n printf printf n printf printf n printf printf n printf return 0 小時候金字塔就是這... 第一步,學一手Python 第二步,用Python把榜上大佬的走法全都爬下來第三步,把爬下來的走法翻譯成c語言 利益相關 Thank you ALL 洩藥 其實沒人麼,不請自來 這個問題其實非常簡單,它大概分為幾個部分 一 與榜上dalao搞好py關係,熟知高娓瀧,木鄰姐,陳香妃,lution,曾嘖...用c語言編寫乙個計算20億以內各位之和是4的素數,怎樣編寫更快速?
如何用C語言畫乙個蘑菇?
僅學過三個月的新手如何用c語言編寫乙個挑夾棋程式?