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

Python设置小数位范围不四舍五入?

郁承运
2023-03-14
问题内容

如何获取float变量,并控制不使用round()的float的距离?例如。

w = float(1.678)

我想把x做成下面的变量。

x = 1.67
y = 1.6
z = 1

如果我使用各自的舍入方法:

x = round(w, 2) # With round I get 1.68 
y = round(y, 1) # With round I get 1.7
z = round(z, 0) # With round I get 2.0

它将四舍五入并将数字更改到对我没有用的程度。我了解这是解决问题的关键,并且工作正常。我该如何在x,y,z变量中获取所需的信息,并且仍然能够以浮点格式在其他方程式中使用它们?


问题答案:

你可以做:

def truncate(f, n):
    return math.floor(f * 10 ** n) / 10 ** n

测试

>>> f=1.923328437452
>>> [truncate(f, n) for n in range(7)]
[1.0, 1.9, 1.92, 1.923, 1.9233, 1.92332, 1.923328]


 类似资料:
  • 我想设置一个 excel 工作表,该工作表将根据输入的值的范围将值四舍五入到不同的小数位。我尝试使用不同的公式,但没有运气。该图显示了要求。是否可以使用嵌套 if 来实现它?或者我需要VB脚本或类似脚本吗?有人能给我一个iIF公式的例子,我至少可以用于两个范围,然后我可以为其余的范围设置它。

  • 因此,为了保持精度,我必须将double转换为字符串,然后调用convert.todecimal(String): 这个方法是有效的,但是我想避免使用字符串变量来将Double转换为Decimal,而不是在15位数后取整?

  • 我如何四舍五入到两个小数位?

  • 获取以下数字集--> 当相加时,这些给出一个整数。

  • 问题内容: 如果值为,则应将其格式化为。如果是,那么应该是。 问题答案: 这是一个实用程序,可以将双精度舍入(而不是截断)双精度至小数位数。 例如: 原始版本;提防这个 这在小数位数很高(例如)或整数部分很大(例如)的极端情况下会严重崩溃。感谢Sloin指出这一点。 多年来,我一直在使用上面的方法将“不太大”的双精度取整到2或3个小数位(例如,以秒为单位的清理时间用于记录目的:27.9876543

  • 问题内容: 假设我的值为15.7784514,我想不进行四舍五入地显示为15.77。 结果是 - 如何显示15.77? 问题答案: 将数字转换为字符串,将数字匹配到小数点后第二位: 该方法在某些情况下(与)不同而失败,因此请务必小心。