Преобразовать двоичный файл в число с плавающей точкой

1

У меня есть двоичный код, например 0.10010011
Как преобразовать его в десятичный плавающий?
(0,10010011 = 0,57421875)

var a = 0.10010011
var b = point_bin2dec(a)
console.log(b) // 0.57421875
  • 0
    какой должна быть точка двоичная ?!
  • 0
    @JonasW. просто двоичный с точкой, как 0,101, 0,1111, 0,000110101 и т. д.
Теги:
algorithm
decimal
binary

2 ответа

0
Лучший ответ

function point_bin2dec(num) {
    var parts = num.toString().split('.');
    return parseInt(parts[0], 2) + (parts[1] || '').split('').reduceRight(function (r, a) {
        return (r + parseInt(a, 2)) / 2;
    }, 0);
}
document.write(point_bin2dec(0.10010011));

Изменено из ответа на этот вопрос. Как преобразовать двоичную дробь в десятичную

0

Попробуйте эту реализацию parseFloat, которая принимает в качестве второго аргумента radix.

const parseFloat = function parseFloat (string, radix = 10) {
  if (radix == 10) {
    return this(string)
  }

  string = String(string);

  const [iString, fString = '0'] = string.split('.')
  const iNumber = parseInt(iString, radix)
  const fNumber = parseInt(fString, radix)
  const fLength = Math.max(fNumber.toString(radix).length, fString.length)
  const sign = Infinity / iNumber === Infinity ? 1 : -1

  return iNumber + sign * fNumber / radix ** fLength
}.bind(parseFloat)

Использование:

parseFloat(0.10010011, 2); // 0.57421875

Ещё вопросы

Сообщество Overcoder
Наверх
Меню