私は浮動小数点の浮動小数点をSwift 3の浮動小数点を使用してバイナリに変換する簡単な方法を探しています。たとえば、このコードは十進数を問題なくバイナリに変換します。Swift 3で小数点(浮動小数点付き)をバイナリに変換する方法は?
func convertToBinary(decimal: Int) -> String {
var n = 0, c = 0, k: [String] = [], fs: String = ""
n = decimal
while n > 0 {
c = n % 2
n = n/2
k.append("\(c)")
}
for i in k.reversed() {
fs += "\(i)"
}
return fs
}
残念ながら、私はそれをfloatへの小数を変更していた場合は、エラーメッセージ を示し
c = n % 2
私は変更していた場合は、変数「「int型を入力するタイプ 『フロート』の値を割り当てることができません」
:さて、その後、私は「%」を変更:それは別のエラーメッセージ 「使用truncatingRemainderは、代わりに 『%』は使用できません」と表示さ浮くするC
すべてが機能しました。バイナリ変換に小数後
0.0
0.0
1.0
0.5
0.25
1.125
1.5625
0.78125
0.390625
0.195312
0.0976562
0.0488281
0.0244141
0.012207
0.00610352
0.00305176
0.00152588
0.000762939
0.00038147
0.000190735
となど
:プログラムが無限小数(例)分割残念ながら
1.4013e-452.8026e-454.2039e-458.40779e-451.68156e-443.50325e-447.00649e-441.4013e-432.8026e-435.60519e-431.12104e-422.24208e-424.48416e-428.96831e-421.79366e-413.58732e-417.17465e-411.43493e-402.86986e-405.73972e-401.14794e-392.29589e-394.59177e-399.18355e-391.83671e-383.67342e-387.34684e-381.46937e-372.93874e-375
となど
たぶん、いくつかの種類があります回避策?
これはCとどのように関連していますか?あなたがSwiftでプログラミングしているなら、Cはどのように関係していますか? –
"(第三者図書館と財団のない自己記述コード)" ...?あなたが必要としているものを標準ライブラリがすでに持っているのであれば、なぜそれを使用しないでしょうか? – Alexander
分数値をバイナリで表現しようとしていますか?上記のアルゴリズムはそれをキャプチャできません。私はあなたのGoogleバイナリ分数をお勧めします。簡単なアルゴリズムについては、https://stackoverflow.com/a/4987217/1271826を参照してください。または、http://floating-point-gui.de/formats/binary/を参照してください。またはhttp://cs.furman.edu/digitaldomain/more/ch6/dec_frac_to_bin.htmを参照してください。これを行う際には、有限バイナリ表現で表現できない小数点の値があることに注意してください。そのため、特定の桁数で上限を設定することをお勧めします。 – Rob