当前位置: 首页 > 知识库问答 >
问题:

Python:圆形浮点数保持0

秦斌
2023-03-14

我只需要在Python中舍入浮点数的最后2个正数

EX:

  • 0.000000302329303-

这是否可能以类似圆形的简单方式实现?

共有3个答案

梁丘琛
2023-03-14

这样吧

from math import ceil, floor

def float_round(num, direction = floor):
    zeros = 0
    number = num
    while number < 0.1:
        number *= 10
        zeros += 1
    places = zeros + 2
    return direction(num * (10**places)) / float(10**places)

a = 43.0093
print(float_round(a, ceil)) ## 43.01
a = 0.018552876
print(float_round(a, ceil)) ## 0.019
a = 0.03352
print(float_round(a, ceil)) ## 0.034
a = 0.0998844
print(float_round(a, ceil)) ## 0.1
a = 0.1093
print(float_round(a, ceil)) ## 0.11
a = 33.0093
print(float_round(a, ceil)) ## 33.01

多亏了大家,答案对我思考问题至关重要。

裴硕
2023-03-14

一种方法是以对数为基数10计算指数,取其负值:

import math

z = 1
x = 0.09838
rounded_x = round(x, math.ceil(-math.log10(x)) + z)

现在您可以更改z来设置位数

请注意,一般来说,使用圆可能会将浮点数转换为科学表示(尾数和指数),因此在非常小的数字中,它可能不太准确。

仉高昂
2023-03-14

我认为您的示例是错误的,但只需根据需要调整代码即可:

# this code doesn't work if some are defined as 0.123 and others as .123
a = 0.000000302329303
nb_characters = len(str(a))
rounding_expr = "%%.%sf" % (nb_characters - 4)
rounded_a = float(rounding_expr % a)
 类似资料:
  • 问题内容: 我很困惑为什么在这种情况下python为什么要添加一些额外的十进制数,请帮助解释 问题答案: 浮点数是一个近似值,它们不能精确存储十进制数。因为它们试图仅用64位表示很大范围的数字,所以它们必须在某种程度上近似。 意识到这一点非常重要,因为它会导致一些怪异的副作用。例如,你可能会非常合理认为,十批的总和会。尽管这似乎合乎逻辑,但在浮点数方面也是错误的: 您可能会认为。浮点世界再次不同意

  • 问题内容: 谁能解释模运算符在Python中如何工作?我不明白为什么。 问题答案: 其实,这是不正确的3.5 % 0.1是0.1。你可以很容易地测试一下: 实际上,在大多数系统上是。但是,在某些版本的Python上是: 现在,你可能想知道为什么是而不是。这是由于通常的浮点舍入问题。如果你还没有阅读每位计算机科学家应该知道的有关浮点运算的知识,那么你应该-至少是对此问题的简要概述。 还需要注意的是3

  • 在编程语言中,小数通常以浮点数的形式存储。浮点数和定点数是相对的:小数在存储过程中如果小数点发生移动,就称为浮点数;如果小数点不动,就称为定点数。 如果你对浮点数的底层存储格式不了解,请猛击:小数在内存中是如何存储的,揭秘诺贝尔奖级别的设计(长篇神文) Python 中的小数有两种书写形式: 1) 十进制形式 这种就是我们平时看到的小数形式,例如 34.6、346.0、0.346。 书写小数时必须

  • 在浮动范围组件上使用ngModel时出现运行时错误。:未指定名称属性的窗体控件没有值访问器 有什么解决方案可以在这两个组件之间绑定ngModel数据吗?

  • 问题内容: 我正在读取一个带有浮点数的文本文件,这些数字都带有1或2个小数点。我正在使用将线转换为浮点数,并在失败的情况下引发。我将所有花车存储在列表中。打印时,我想将其打印为2个小数位的浮点数。 假设我有一个文本文件,其编号为-3,65、9,17、1。我阅读了每个文件,然后将它们转换为float并将它们附加到列表中。现在在Python 2中,调用return 。但是在Python 3中,-3.6

  • 我一直在想,找到了很多方法,当格式化成字符串时,可以从doubles中删除.0,但从来没有找到过如何为价格保留东西。 但我需要的是这样的女人 这不是一个重复的,因为它会在我不想要的任何价格上加上00...我只是想去掉浮点,如果它后面有零,但如果有一个数字,就保留任何零。 例如。