将非整数十进制数转换为二进制
Converting non-integer decimal numbers to binary
数据帧输入(DF)
a
123.213
4343.344
3434.43255
422.45
34534
需要二进制(16 位)的结果
我试过一个功能
intTobits
rawTobits
但对我没用
整数 十进制数到二进制数的转换在 this post 中有详细讨论。非整数是一个不同的问题。
对于浮点十进制数的二进制表示可以试试这个函数:
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))
}
请注意,此函数仅适用于 非负数 数字。
这是问题中指示的数字的输出:
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"
数据帧输入(DF)
a
123.213
4343.344
3434.43255
422.45
34534
需要二进制(16 位)的结果
我试过一个功能
intTobits
rawTobits
但对我没用
整数 十进制数到二进制数的转换在 this post 中有详细讨论。非整数是一个不同的问题。
对于浮点十进制数的二进制表示可以试试这个函数:
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))
}
请注意,此函数仅适用于 非负数 数字。
这是问题中指示的数字的输出:
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"