2016-08-09 47 views
1

Datenrahmeneingang (DF)Converting nicht ganzzahlige Dezimalzahlen in binäre

a 
123.213 
4343.344 
3434.43255 
422.45 
34534 

binär erforderlichen Ergebnisse (16 Bits)

I eine Funktion

intTobits 
rawTobits 

aber didn versucht haben, 't hat für mich funktioniert

+0

in diesem Fall nur ganze Zahlen hier verwendet wurden, aber wir haben numerische Werte in Dezimalzahlen auch –

+3

Ich glaube nicht, es eine bereits existierende Funktion ist . Sie müssen Ihre eigenen schreiben. – user2100721

Antwort

2

Die Umwandlung von Integer dezimal nu mbers in Binärzahlen wird ausführlich in this post diskutiert. Nicht ganzzahlige Zahlen sind ein anderes Problem.

Für die binäre Darstellung von Gleitkomma-Dezimalzahlen Sie diese Funktion ausprobieren können:

floatToBin <- function(x){ 
    int_part <- floor(x) 
    dec_part <- x - int_part 
    int_bin <- R.utils::intToBin(int_part) 
    dec_bin <- stringr::str_pad(R.utils::intToBin(dec_part * 2^31), 31, pad="0") 
    sub("[.]?0+$", "", paste0(int_bin, ".", dec_bin)) 
} 

Beachten Sie, dass diese Funktion nur für nicht negative Zahlen.

Dies ist die Ausgabe für die Zahlen in der Frage angegeben:

nums <- c(123.213, 4343.344, 3434.43255, 422.45, 34534) 
sapply(nums, floatToBin) 
#[1] "1111011.0011011010000111001010110000001"  
#[2] "1000011110111.010110000001000001100010010011" 
#[3] "110101101010.0110111010111011100110001100011" 
#[4] "110100110.0111001100110011001100110011001" 
#[5] "1000011011100110"