有两点需要注意:

  1. 二进制表示小数可能存在精度丢失(这是十进制转二进制的原理决定的,例如0.9乘2取余无穷无尽)
  2. 计算机遵循四舍六入,五奇进偶舍,即 x.abc,当b=5需要保留一位小数时
    1). 若c>0,则a+1
    2). 若c=0且a=奇数,则a+1
    3). 若c=0且a=偶数,则a不变

故采用两种方法:

  • 方法一

    # 该方法适用于小数位精度不高时
    var = input()
    res = int(float(var) + 0.5)        # float()字符串转函数(此时高精度已丢失),+0.5代表五入规则,int用于去除小数
  • 方法二

    import decimal
    var = input()
    res =decimal.Decimal(var).quantize(decimal.Decimal('0'), rounding=decimal.ROUND_HALF_UP))
  • 通用方法

    保留小数点后index位

    index = 1           # 保留小数点后index位
    num = input()
    res = int(float(num) * pow(10, index) + 0.5) / pow(10, index)
    print(res)