python浮点数转科学计数_python – 将float转换为字符串没有科学记数法和假精度...

不幸的是,似乎甚至没有浮动.__格式的新式格式支持这个。 float的默认格式与repr相同;和f标志默认有6个小数位数:

>>> format(0.0000000005, 'f')

'0.000000'

然而,有一个hack获得所需的结果 – 不是最快的,但相对简单:

>首先使用str()或repr()将float转换为字符串,

>然后从该字符串创建一个新的Decimal实例。

> Decimal .__ format__支持f标志,它给出所需的结果,并且与float不同,它打印实际精度而不是默认精度。

因此我们可以创建一个简单的效用函数float_to_str:

import decimal

# create a new context for this task

ctx = decimal.Context()

# 20 digits should be enough for everyone :D

ctx.prec = 20

def float_to_str(f):

"""

Convert the given float to a string,

without resorting to scientific notation

"""

d1 = ctx.create_decimal(repr(f))

return format(d1, 'f')

必须小心不要使用全局十进制上下文,因此为此函数构造一个新的上下文。这是最快的方式;另一种方法是使用decimal.local_context,但它会更慢,为每个转换创

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值