仅在需要时才使用浮动Jython小数位

时间:2015-06-26 08:03:52

标签: python jython

我在Jython中搜索功能,当浮点数不是整数时,它的输出只有小数点。

我找到了:

>>> x = 23.457413902458498
>>> s = format(x, '.5f')
>>> s
'23.45741'

但是

>>> y=10
>>> format(y, '.2f')
'10.00'

在这种情况下,我想只有

'10'

你能帮助我吗?!

感谢您的帮助!!!

2 个答案:

答案 0 :(得分:1)

这将在Jython 2.7中起作用,其中x是要格式化的浮点数,而else之后的值将设置小数位数:

"{0:.{1}f}".format(x, 0 if x.is_integer() else 2)

答案 1 :(得分:1)

试试'' (对于"一般")浮点数的格式规范(docs):

>>> format(23.4574, '.4g')
'23.46'
>>> format(10, '.4g')
'10'

请注意,给出的数字不是小数点后的数字,它的精度(有效位数),这就是第一个例子保留输入4位数的原因。

如果要指定小数点后的数字但删除尾随零,请直接执行此操作:

def format_stripping_zeros(num, precision):
  format_string = '.%df' % precision
  # Strip trailing zeros and then trailing decimal points.
  # Can't strip them at the same time otherwise formatting 10 will return '1'
  return format(num, format_string).rstrip('0').rstrip('.')

>>> format_stripping_zeros(10, precision=2)
'10'
>>> import math
>>> format_stripping_zeros(math.pi, precision=5)
'3.14159'