2

数値に小数がない場合、float を int に変換してみます。

私はこれを作ります

from math import modf

def float_like_int(n):
    if abs(modf(n)[0]) < 1e-6:
        return int(n)
return n

print float_like_int(10.1)
print float_like_int(10.00001)
print float_like_int(10.000001)
print float_like_int(10.0)

標準関数またはより一般的な方法が存在しますか? (1e-6 なし)

4

4 に答える 4

3

使用しているアプローチでは、小数部分が 1e-6 (0.000001) 未満の場合、数値を整数にしようとします。これは、数値 4.000001 (実際には浮動小数点数) がある場合、関数は小数部分を破棄することを意味します。1e-6 を別の値に変更すると、基準を満たす数値がintに変換されます。

これは、追加のモジュールをインポートしていない私のコードです。このコードは小数部分を破棄しません。

def Func(a):
    if (a * 10) % 10 == 0:
        return int(a)
    else:
        return a
f = 4.03
print Func(23.45)
print Func(f)
print Func(2.3)
于 2013-10-23T17:53:34.337 に答える