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

如何使Python格式的浮点数具有一定数量的有效数字?

梁丘飞鸾
2023-03-14
问题内容

我希望我的Python(2.4.3)输出数字具有某种格式。具体来说,如果数字是有效位数<= 6的终止十进制数,请全部显示。但是,如果它具有>
6个​​有效数字,则仅输出6个有效数字。

“ A”显示Python如何编写浮点数。“ B”表示我希望他们如何写作。如何以这种方式使Python格式化我的数字?

A:
10188469102.605597
5.5657188485
3.539
22.1522612479
0
15.9638450858
0.284024
7.58096703786
24.3469152383

B:
1.01885e+10
5.56572
3.539
22.1523
0
15.9638
0.284024
7.58097
24.3469

问题答案:

您将需要用于g修饰符的修饰符,该修饰符format会删除不重要的零;

>>> "{0:.6g}".format(5.5657188485)
'5.56572'
>>> "{0:.6g}".format(3.539)
'3.539'

抱歉,我的更新还包括一个事实,我只能使用Python 2.4.3,它没有format()函数。

格式说明符即使没有该.format()功能也可以工作:

>>> for i in a:
...    print '%.6g' % (i,)
...
1.01885e+10
5.56572
3.539
22.1523
0
15.9638
0.284024
7.58097
24.3469


 类似资料:
  • Wiki双精度浮点格式表示: 这给出了15–17位有效小数的精度。如果将最多包含15个有效数字的十进制字符串转换为IEEE 754双精度表示形式,然后再转换回包含相同有效数字的字符串,那么最终的字符串应该与原始字符串匹配。如果将IEEE 754双精度转换为至少有17位有效数字的十进制字符串,然后再转换回double,则最终数字必须与原始数字匹配。 有人能给我一些例子来说明转换如何与原始匹配,以及在

  • 问题内容: 以下值给我错误的精度。仅使用特定数字可以观察到它。这可能是一个浮动表示问题,但想知道具体原因。 正在打印的输出代替。 问题答案: 如果希望十进制数字与在Java中输入的数字完全一样,请使用BigDecimal而不是float。 浮点数对于十进制而言本质上是不准确的,因为许多以十进制结尾的数字(例如0.1)都是以二进制形式重复出现的数字,并且浮点数以二进制表示形式存储。

  • 最近的一个问题,编译器是否允许用浮点乘法代替浮点除法,启发了我提出这个问题。 在严格要求代码转换后的结果应与实际除法运算在位上相同的情况下,很容易看出,对于二进制IEEE-754算法,除数为2的幂的除数也是可能的。只要除数的倒数是可表示的,乘以除数的倒数就会得到与除数相同的结果。例如,乘以0.5可以代替除以2.0。 然后,人们会想知道这种替换的其他除数还能起什么作用,假设我们允许任何替换除法但运行

  • 问题内容: 我有一个类型的变量,我需要以不超过3个小数的精度打印它,但是它不应该有任何结尾的零… 例如。我需要 我尝试使用,我做错了吗? 谢谢。:) 问题答案: 尝试使用模式代替: 输出:

  • 如果我有一个浮点数据帧,我可以使用pd自定义显示。选项。陈列float\u格式,如本回答中所述。例如: 这将给我预期的结果: 另一方面,如果我在数据帧包含复杂浮点数时尝试相同的方法,这将不起作用: 生产: 我在相关文档中没有看到任何关于复数的具体提及,以及{:,.2f}。格式(np.complex(1.12345 1j*.8746234))正确地截断了复数的实部和虚部,那么为什么这不起作用呢?

  • 问题内容: 浮点数是否具有32个二进制数字,而双精度数是否具有64个二进制数字?该文档太难理解了。 所有位都转换为有效数字吗?还是小数点的位置占用了一些位? 问题答案: float:32位(4个字节),其中23位用于尾数(约7个十进制数字)。指数使用8位,因此浮点数可以使用这8位将小数点“移动”到右边或左边。这样做避免了像0.0000003(3×10 -7)或3000000(3×10 7)那样在尾