当前位置: 首页 > 面试题库 >

Python浮点数到十进制转换

唐元凯
2023-03-14
问题内容

Python Decimal不支持从float构造。它期望您必须先将float转换为字符串。

这非常不方便,因为float的标准字符串格式器要求您指定小数位数而不是有效位数。因此,如果您的数字最多可能有15个小数位,则需要将其格式设置为Decimal(“”%。15f“%my_float),如果您之前还有任何有效数字的话,也会在第15个小数位出现垃圾十进制。

有人可以建议一种在用户输入时从float转换为Decimal保留值的好方法,也许会限制可以支持的有效位数吗?


问题答案:

Python <2.7

"%.15g" % f

或在Python 3.0中:

format(f, ".15g")

Python 2.7 +,3.2 +

只需将floatDecimal直接传递给构造函数,如下所示:

from decimal import Decimal
Decimal(f)


 类似资料:
  • 二、浮点数转换成十进制数的步骤 该步骤与前面“十进制数转换成浮点数”的步骤是互逆的,其具体步骤如下: 1、分割数字的符号、阶码和有效数字; 2、将偏移阶码减去偏移,得到真正的阶码; 3、把数字写成规格化的二进制数形式; 4、把规格化的二进制数改变成非规格化的二进制数; 5、把非规格化的二进制数转换成十进制数。 例11.2 把协处理器中的浮点数1100000111001001000000000000

  • 问题内容: 如何在Python中将以下十六进制字符串转换为float(单精度32位)? 问题答案: 在 Python 3中 : 在 Python 2中 :

  • 问题内容: 我必须将,以s 表示(例如)转换为浮点值( IEEE-754 转换)。我没有使用strconv.ParseFloat函数做到这一点。还有什么我要用的吗?到目前为止我找不到。我也尝试先将其转换为整数,然后转换为浮点数,但结果是错误的。 我最后一次尝试的代码: 问题答案: 首先,需要说明输入的位长。由于十六进制表示形式有4个字节(8个十六进制数字),因此很可能是a (需要询问者澄清)。 您

  • 问题内容: 我不太了解功能以及此处。实际上是什么意思? 为什么在这里我需要将浮点数转换为小数? 下面是相同的sql小提琴吗? http://sqlfiddle.com/#!2/1ed51b/1/0 我的问题再次重复: 实际上是什么意思? 为什么在这里我需要将浮点数转换为小数? 问题答案: 表示具有固定小数点的数字,总共有7位数字,其中2位在小数点右边。(因此,左5个,右2个。) 你并不 需要 ,除

  • 我正在尝试将十六进制数据添加到十六进制字符串中,我需要使用它们的IEEE表示将浮点数添加到该字符串中。对于整数,这很简单: 其中value是数字的VARCHAR,params是包含十六进制字符串的VARCHAR。这个技巧适用于整数,但对于十进制,它会截断十进制部分,并将整数部分转换为十六进制整数。如果十进制的大小是固定的(java float或double),如何将值转换为十进制数的IEEE浮点表

  • 问题内容: 我正在寻找一种将datetime对象转换为十进制(/ float)年,包括小数部分的方法。例: 如何转换为十进制年份?从这种格式到这种格式 (注意:在统计建模中(例如,用于线性回归),这称为 “时间指数” ) 问题答案: 演示: 此方法可能精确到秒(如果是夏令时或其他奇怪的区域性影响生效,则为小时)。在leap年期间也可以正常工作。如果您需要极高的分辨率(例如由于地球自转的变化),那么