簡體   English   中英

Unix BC“ bc -l”等於“ .8”而不是“ A”,為什么?

[英]Unix BC “bc -l” equals “.8” instead of “A” , why?

運行bc -l

如果設置ibase = obase = 16,則要求輸入“ 0.2 * 5”

等於0.8。 為什么它不等於十六進制值1?

我最初在這里問這個問題( http://bit.ly/17o7RcK )。

我認為問題在於您正在用十六進制進行輸入,但它正在以十進制進行內部計算,並使用十六進制輸入的長度來確定數字應代表多少個十進制數字。 因此,當您輸入“ 0.2”(十六進制)時,它將轉換為最接近的1位數十進制數字0.1(十進制)。 將其乘以5,得出0.5(dec)= 0.8(hex)。

您可以通過強制它使用更多的十進制數字來看到它。 如果您執行“ 0.20 * 5”,它將0.20(十六進制)轉換為0.12(十進制),乘以12得到0.60(十進制),四舍五入為0.99(十六進制)輸出。 如果您執行“ 0.200 * 5”,則它將0.200(hex)轉換為0.125(dec),乘以5得到0.625(dec),轉換為0.A00(hex),這是“正確”的結果。

0.2(十進制)-> 0.1(十六進制)

0.5(十進制)-> 0.8(十六進制)

因此,我相信正在發生的事情是:

十六進制輸入(0.1 * 5),以十進制輸出(以10為基數)為0.5,以十六進制輸入(以16為基數),輸出為(0.8)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM