【问题标题】:how can I convert a binary float to a base 10 float and vice versa?如何将二进制浮点数转换为以 10 为底的浮点数,反之亦然?
【发布时间】:2016-01-04 19:29:17
【问题描述】:

我有一个像 '10.1' 这样的二进制浮点数,想将它转换为十进制浮点数。然后我想对其进行一些操作并将其转换回二进制浮点数。 python 2中是否有内置函数可以做到这一点?如果不是,那么最短(以字节为单位)的方法是什么?

【问题讨论】:

  • 你能举个例子吗?二进制浮点数“10.1”看起来像十进制浮点数?你会对其进行哪些操作?当你把它转换回来时它会是什么样子?
  • @Kevin 它看起来像“2.1”。完成的操作只是一个 eval()。有一个带有二进制浮点数的字符串,每个都转换为以 10 为底的浮点数,然后对字符串求值,并将结果转换回二进制浮点数。
  • 2.1 是实际转换成的数字,还是它“看起来”的一个例子?
  • 检查this out
  • 真的是“2.1”吗?还是您的意思是“2.5”?

标签: python binary floating-point decimal python-2.x


【解决方案1】:

二进制文件没有内置的方法(尽管来自hexadecimal)。最简单的方法是去掉.,解析为整数,然后适当缩放:

import math
x = "10.1"
p = len(x) - x.index(".") - 1
i = int(x.replace(".",""),2)
math.ldexp(i,-p)

这假设您的字符串只包含 0s、1s 和一个 .(即没有空格或指数)。

【讨论】:

  • p=x[::-1].index('.')
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-26
  • 2016-06-02
  • 2018-10-17
  • 2017-06-24
相关资源
最近更新 更多