【问题标题】:Write floating point numbers without any decimal places写入不带小数位的浮点数
【发布时间】:2016-10-08 01:31:42
【问题描述】:

我正在尝试让 Python 复制一些实数值的 FORTRAN 输出。我的 FORTRAN 将实际值打印为“31380”。我正在尝试在 Python 中复制相同的内容——请注意,虽然我没有小数位,但我实际上希望打印小数点(句点)。我当前的代码是

htgm=31380.
print '{:6.0f}'.format(htgm)

产生“31380”。我做错了什么?

【问题讨论】:

  • 在格式字符串中追加.怎么样? '{:6.0f}.'.format(htgm)

标签: python string format


【解决方案1】:

Python 格式语言包括一个用于浮点数的“替代”形式,它通过在格式字符串中使用“#”来强制使用小数点:

>>> htgm=31380.
>>> format(htgm, '#.0f')
'31380.'

这就是我认为您正在寻找的东西。
我认为#g 会是您想要的,但由于某种原因,python 重新添加了0

>>> htgm=31380.
>>> format(htgm, 'g')
'31380'
>>> format(htgm, '#g')
'31380.0'

【讨论】:

  • 这仅在 Python 3 中可用吗?
  • 虽然 # 自 Py >2.6 以来一直存在,但看起来浮动的替代形式仅在 Py3 中添加。
【解决方案2】:

Python 无法将htgm 的类型保持为float。但是,如果您可以将其设为str,您可以这样做:

htgm=31380.
'{0:.0f}.'.format(htgm)
# returns: '31380.'

# OR, even simply
'{}.'.format(int(htgm))

【讨论】:

    【解决方案3】:

    当需要显示数字时,使用:

    print(str(htgm)[:-1])
    

    此表示法将去掉最后的“0”。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-06
      • 2016-10-19
      • 1970-01-01
      • 2011-09-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多