四舍五入到最接近的整数

Rounding to the nearest Integer

如果与最接近整数的绝对差小于或等于 0.01,我想舍入到最接近的整数,

我的代码已经过测试:

import unittest

def round_price(price):

  if abs(price - round(price)) <= 0.01:
    price = int(round(price))
  return price


class TestRounding(unittest.TestCase):
  def test_rounding(self):
    self.assertEqual(round_price(15.98), 15.98)
    self.assertEqual(round_price(15.99), 16)
    self.assertEqual(round_price(16.00), 16)
    self.assertEqual(round_price(16.01), 16)
    self.assertEqual(round_price(16.02), 16.02)

if __name__ == '__main__':
unittest.main()

我在测试时仍然遇到错误,

self.assertEqual(round_price(16.01), 16) 断言错误:16.01 != 16

您需要比较价格与四舍五入后价格的差值:

def round_price(price):

  if abs(price - round(price)) <= 0.01:
    price = int(round(price))
  return price
def round_price(price):

    if abs(price - round(price)) <= 0.01000001:
        price = round(price)
    return price