当前位置: 代码迷 >> python >> 不使用舍入功能将舍入功能舍入到给定的十进制
  详细解决方案

不使用舍入功能将舍入功能舍入到给定的十进制

热度:70   发布时间:2023-06-16 10:06:22.0

我正在尝试编写一个函数来将浮点数舍入到n个小数位。 该函数可以带有一个或两个参数。 如果只有一个参数,则该数字应四舍五入到小数点后两位。

到目前为止,这是我到达的地方:

def roundno(num,point=2):
    import math
    x=1*(math.pow(10,-point))
    round=0
    while (num>x):
            while(num>0):
                    round+=num/10
                    num=num/10
                    round*=10
            round+=num/10
            num=num/10
            round*=0.1
    return round

每次我得到的输出都是无穷大...我哪里出错了?

我看不到您的算法应该如何对数字取整。 我想类似的策略也可以用,但是您需要在某个地方减去一个...

一种方法是将参数转换为字符串,调整小数点后的位数,然后将字符串转换回浮点数,但是我怀疑您的老师不喜欢这种解决方案。 :)

这是一种简单的算术四舍五入方法:

def roundno(num, point=2):
    scale = 10.0 ** point
    return int(num * scale) / scale


data = [123, 12.34, 1.234, 9.8765, 98.76543]

for n in data:
    print n, roundno(n), roundno(n, 3)

输出

123 123.0 123.0
12.34 12.34 12.34
1.234 1.23 1.234
9.8765 9.87 9.876
98.76543 98.76 98.765

这只会丢弃不需要的数字,但是将其修改为四舍五入并不困难(您不清楚您想要哪种类型的舍入)。

请注意,此函数不会检查point参数。 确实应该检查它是否为非负整数,否则应使用适当的错误消息引发ValueError

  相关解决方案