![]() |
1
156
因此,如果您只需要最有效的数字:
如果float大于1,您可能需要注意将其转换为整数。 |
![]() |
2
106
%字符串格式中的g将格式化一个四舍五入到一些有效数字的浮点。它有时会使用“e”科学表示法,因此将舍入的字符串转换回浮点数,然后通过%s字符串格式。
|
![]() |
3
60
|
![]() |
4
37
此解决方案与所有其他解决方案不同,因为:
对于任意数
测试:
注意
:使用此解决方案,无法从输入中动态调整有效数字的数量,因为没有标准方法来区分具有不同尾随零数的数字(
|
![]() |
5
11
我已经创建了包 to-precision 那正是你想要的。它允许你给你的数字或多或少有意义的数字。
在公认的答案中有一行
它还将舍入最后一个有效数字,并可以在未指定符号时自动选择要使用的符号:
|
![]() |
6
7
为了直接回答这个问题,下面是我使用 R function
我发布这个答案的主要原因是有评论抱怨说“0.075”是0.07而不是0.08。正如“新手C”所指出的,这是由于浮点运算同时具有这两种功能 finite precision and a base-2 representation . 实际上可以表示的最接近0.075的数字稍微小一些,因此舍入结果与您可能天真地期望的结果不同。 还要注意,这适用于任何非十进制浮点运算的使用,例如C和Java都有相同的问题。
这给了我们:
为了展示这些数字是如何工作的,我们可以通过以下步骤回到起点:
应该打印出来
现在我们知道了浮点数是如何表示的,我们可以使用
给:
|
![]() |
7
5
要将整数四舍五入为1位有效数字,基本思想是将其转换为一个浮点数,该浮点数前有1位数字,然后将其四舍五入,然后将其转换回原始整数大小。 要做到这一点,我们需要知道10的最大幂小于整数。我们可以使用log10函数的floor来实现这个。
|
![]() |
8
4
希望能从上面所有的答案中选一个最好的(减去把它作为一行lambda;)。尚未探索,请随意编辑以下答案:
|
![]() |
9
4
我修改了indgar的解决方案来处理负数和小数字(包括零)。
|
![]() |
10
3
如果您想在不涉及字符串的情况下进行舍入,我在上面的注释中找到了链接: http://code.activestate.com/lists/python-tutor/70739/ 我觉得这是最好的。然后,当您使用任何字符串格式描述符打印时,您将得到合理的输出,并且您可以将数字表示用于其他计算目的。
如果出于某种原因,您使用的是极小值,则不会引发错误。 |
![]() |
11
2
我想不出有什么东西能在开箱即用。但对于浮点数来说,它处理得相当好。
或整数:
如果您想创建一个处理任意数字的函数,我的首选方法是将它们都转换为字符串,并查找一个小数位来决定要执行的操作:
另一个选择是检查类型。这将远远不够灵活,可能无法很好地与其他数字,如
|
![]() |
12
2
numpy.format_float_positional
|
![]() |
13
1
使用python 2.6+ new-style formatting
在python2.7+中,可以省略前导字符
|
![]() |
14
0
我也遇到过这种情况,但我需要控制舍入类型。因此,我编写了一个快速函数(见下面的代码),可以考虑值、舍入类型和所需的有效数字。
|
![]() |
15
0
希望有帮助。 |
![]() |
16
0
https://stackoverflow.com/users/1391441/gabriel ,以下内容是否解决了您对rnd(.075,1)的担忧? 警告:以浮点形式返回值
|
![]() |
17
0
这将返回一个字符串,以便正确显示不带小数部分的结果和以E表示法显示的较小值:
|
![]() |
18
0
既然一个问题回答得这么透彻,为什么不再加一个呢 这更符合我的审美观,尽管上面的很多都是可比的
这适用于单个数字和numpy数组,对于负数应该可以正常工作。
不幸的是,这最后一步对于一组数字是行不通的——亲爱的读者,如果你需要的话,我将把它留给你去弄清楚。 |
![]() |
19
0
sigfig installing 您可以执行以下操作:
|
![]() |
20
0
|
![]() |
21
0
这些答案大多涉及数学、十进制和/或numpy导入或输出字符串值。下面是一个用基本python编写的简单解决方案,它可以处理大数字和小数字,并输出一个浮点值:
|