2017-10-12 101 views
-2

當試圖找到我碰到這個傳來了回答,並想知道如果這是真的,爲什麼它是一個有限表示。說明在確定是否一個十進制數在基地

https://stackoverflow.com/a/489870/5712298

如果任何人都可以向我解釋或鏈接我到一個頁面解釋它,將是巨大的。

+0

您鏈接的答案決定了十進制值是否可以完全用_binary浮點數表示,儘管答案只是表示_binary_,它本身是模棱兩可的。因爲你的問題的標題可能需要改變,所以它是非常具體的,而不僅僅是「_a base_」。 – Clifford

+0

我認爲鏈接中的方法描述存在錯誤,請參閱我的評論添加到它。 – Clifford

回答

1

#1的標記不支持數學符號很好,這個大多數讀者將是程序員,所以我將使用通用編程表達式語法:

* multiplication 
^ exponentiation 
/division 
x[i] Element i of an array x 
== equality 
PROD product 

這本書以是否給出問題的基數r終止分數a/(r^n),有一個端接基數s分數b/(s^m)具有完全相同的值,ab整數,rs正整數,nm非負intege RS。

a/(r^n)==b/(s^m)相當於b==a*(s^m)/(r^n)a/(r^n)正好等於一些基數s終止分數如果且僅當,存在一個正整數m使得a*(s^m)/(r^n)是一個整數。

考慮的rPROD(p[i]^k[i])的主要因子。如果因爲某些ip[i]^k[i]是在r的因式分解的一個術語,然後p[i]^(n*k[i])是在r^n的因式分解的術語。

a*(s^m)/(r^n)是一個整數,當且僅當,在r^n的因式分解每p[i]^(n*k[i])也是a*(s^m)

首先假設p[i]一個因素也是s一個因素。那麼對於足夠大的m,p[i]^(n*k[i])是因子s^m

現在假設p[i]不是s一個因素。當且僅當它是因子a時,p[i]^(n*k[i])是因子a*(s^m)

爲一個非負整數m使得b==a*(s^m)/(r^n)是一個整數的存在的必要且充分條件是,對於在r素因子分解每個p[i]^k[i],無論p[i]sp[i]^(n*k[i])一個因子是因子的a

將此應用於r=10s=2的常見情況下,r的素因分解爲(2^1)*(5^1)。 2是因數2,所以我們可以忽略它。 5不是,所以我們需要5^n是因子a

考慮某些特定情況下:

十進制0.11/10,5不是1因子,所以沒有確切二進制分數當量。

十進制0.625,625/(10^3)5^3是125,這是一個625的因子,所以有一個確切的二進制分數等價。 (它是二進制0.101)。

參考答案https://stackoverflow.com/a/489870/5712298中的方法相當於這個從小數到二進制。它需要一些工作來擴展到一般情況,以允許指數不爲1的素數因子。

相關問題