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

打印浮点值,不带前导零

翁鸿远
2023-03-14
问题内容

尝试使用格式说明符来打印浮点数,该浮点数将小于1,且前导零。我想出了一点技巧,但我认为有一种方法可以将格式说明符中的前导零丢弃。我在文档中找不到它。

问题

>>> k = .1337
>>> print "%.4f" % k
'0.1337'

哈克

>>> print ("%.4f" % k) [1:]
'.1337'

问题答案:

尽管我喜欢可爱的正则表达式技巧,但我认为简单的函数是实现此目的的最佳方法:

def formatFloat(fmt, val):
  ret = fmt % val
  if ret.startswith("0."):
    return ret[1:]
  if ret.startswith("-0."):
    return "-" + ret[2:]
  return ret

>>> formatFloat("%.4f", .2)
'.2000'
>>> formatFloat("%.4f", -.2)
'-.2000'
>>> formatFloat("%.4f", -100.2)
'-100.2000'
>>> formatFloat("%.4f", 100.2)
'100.2000'

这样做的好处是易于理解,部分原因startswith是因为它是简单的字符串匹配而不是正则表达式



 类似资料:
  • 问题内容: 如果结果为小数,如何打印浮点数;如果结果没有小数,如何打印整数? 示例结果 问题答案: 您可以尝试使用简单的Python字符串格式化方法: 如果满足以下条件,将为您提供以下输出: 或此输出,如果:

  • 问题内容: 众所周知,(大多数)浮点数没有精确存储(使用IEEE-754格式时)。因此,不应这样做: ......因为它会导致,除非一些特定的任意精度的类型/类使用(BigDecimal的中的Java/Ruby的,bcmath时在PHP中,[数学::BigInt有 / 数学::BigFloat在Perl,仅举几例)来代替。 但是,我想知道为什么当尝试打印该表达式的结果时,脚本语言(Perl和PHP

  • 问题内容: 当我在PHP中进行以下乘法时: 我得到结果:1.0E-9 我想将此结果转换为普通的十进制表示法,我该怎么做? 不起作用,它返回。溢出? 问题答案: 不起作用,它返回。溢出? 可以,但是您在这里错过了一点。 没有溢出。只是对于修饰符,默认情况下使用6位数字。另外,请注意区域设置,可能更适合。 您可能希望使用更多数字,例如说4000000(400万): 如该示例所示,不仅有一个公共值(6位

  • 我正在生成一个用作FORTRAN输入文件的文本文件。FORTRAN程序指定它读取的值的格式必须 必须打印为 到目前为止,我使用iostream最接近的是 使用代码 有没有人知道如上图所示获得前导零的最佳方法,最好是使用ostream而不是printf?

  • 我可以用< code>System.out.print来做吗?

  • 问题内容: 为什么 打印而不是? 作为以下代码行的输出,我的字符串看起来如何? 问题答案: 数后这里定义全宽,包括小数点,所以你需要将其更改为: