十进制转换成二进制
0.1.toString(2)
"0.0001100110011001100110011001100110011001100110011001101"
toString()方法可把一个 Number 对象转换为一个字符串,并返回结果。
语法
parseInt(string, radix);
其中,radix为可选。规定表示数字的基数,使 2 ~ 36 之间的整数。若省略该参数,则使用基数 10。但是要注意,如果该参数是 10 以外的其他值,则 ECMAScript 标准允许实现返回任意值。
二进制转换为十进制
let num = 1100100;
console.log(parseInt(num,2));
语法
parseInt(string, radix);
其中,string为必需。要被解析的字符串。radix为可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。如果该参数小于 2 或者大于 36,则parseInt() 将返回 NaN。
但是这个转化浮点数没用
二进制小数转换成十进制
/**
* 将二进制小数部分转换为十进制数
* @param binaryFloatPartArr 二进制小数部分中由小数各位组成的数组
*/
function eachBinaryFloatPartToDecimal(binaryFloatPartArr) {
return binaryFloatPartArr.map((currentValue, index) => {
return Number(currentValue) * Math.pow(2, (-(index + 1)))
})
}
/**
* 将二进制小数(包含整数部分和小数部分)转换为十进制数
* @param binaryNum 二进制数(可能是整数,也可能是小数)
*/
function binaryFloatToDecimal(binaryNum) {
// 如果该二进制只有整数部分则直接用 parseInt(string, radix) 处理
if (Number.isInteger(binaryNum)) {
return parseInt(binaryNum, 2)
} else {
const binaryFloatNumArr = binaryNum.toString().split(".")
// 将二进制整数转换为十进制数
const binaryIntParStr = binaryFloatNumArr[0]
const decimalIntPartNum = parseInt(binaryIntParStr, 2)
// 将二进制小数部分转换为十进制数
const binaryFloatPartArr = binaryFloatNumArr[1].split("")
const eachDecimalFloatPartNum = eachBinaryFloatPartToDecimal(binaryFloatPartArr)
const deciamlFloatPartNum = eachDecimalFloatPartNum.reduce((accumulator, currentValue) => { return accumulator + currentValue })
return decimalIntPartNum + deciamlFloatPartNum
}
}
console.log(binaryFloatToDecimal(1111011.111)) // 123.875
部分转载于:https://www.jianshu.com/p/e301de533bc3
本文详细介绍了如何在JavaScript中进行十进制与二进制之间的转换,包括整数和浮点数。通过parseInt()和toString()方法实现了基本的转换。还提供了一个自定义函数用于将二进制小数转换为十进制,例如1111011.111转换为123.875。
9507

被折叠的 条评论
为什么被折叠?



