當試圖找到我碰到這個傳來了回答,並想知道如果這是真的,爲什麼它是一個有限表示。說明在確定是否一個十進制數在基地
https://stackoverflow.com/a/489870/5712298
如果任何人都可以向我解釋或鏈接我到一個頁面解釋它,將是巨大的。
當試圖找到我碰到這個傳來了回答,並想知道如果這是真的,爲什麼它是一個有限表示。說明在確定是否一個十進制數在基地
https://stackoverflow.com/a/489870/5712298
如果任何人都可以向我解釋或鏈接我到一個頁面解釋它,將是巨大的。
#1的標記不支持數學符號很好,這個大多數讀者將是程序員,所以我將使用通用編程表達式語法:
* multiplication
^ exponentiation
/division
x[i] Element i of an array x
== equality
PROD product
這本書以是否給出問題的基數r
終止分數a/(r^n)
,有一個端接基數s
分數b/(s^m)
具有完全相同的值,a
,b
整數,r
和s
正整數,n
和m
非負intege RS。
a/(r^n)==b/(s^m)
相當於b==a*(s^m)/(r^n)
。 a/(r^n)
正好等於一些基數s
終止分數如果且僅當,存在一個正整數m
使得a*(s^m)/(r^n)
是一個整數。
考慮的r
,PROD(p[i]^k[i])
的主要因子。如果因爲某些i
,p[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]
是s
或p[i]^(n*k[i])
一個因子是因子的a
。
將此應用於r=10
和s=2
的常見情況下,r
的素因分解爲(2^1)*(5^1)
。 2是因數2,所以我們可以忽略它。 5不是,所以我們需要5^n
是因子a
。
考慮某些特定情況下:
十進制0.1
是1/10
,5不是1因子,所以沒有確切二進制分數當量。
十進制0.625
,625/(10^3)
。 5^3
是125,這是一個625的因子,所以有一個確切的二進制分數等價。 (它是二進制0.101)。
參考答案https://stackoverflow.com/a/489870/5712298中的方法相當於這個從小數到二進制。它需要一些工作來擴展到一般情況,以允許指數不爲1的素數因子。
您鏈接的答案決定了十進制值是否可以完全用_binary浮點數表示,儘管答案只是表示_binary_,它本身是模棱兩可的。因爲你的問題的標題可能需要改變,所以它是非常具體的,而不僅僅是「_a base_」。 – Clifford
我認爲鏈接中的方法描述存在錯誤,請參閱我的評論添加到它。 – Clifford