pyatil
Фев. 8, 2014 11:15:32
Добрый день уважаемые,
Допустим есть программа которая принимает на вход числа, я написал что надо проверить для ее тестирования, и споткнулся на 0, как получить минимальное значиние float со знаком + например 0.000000…1 и аналогично -.
максимальное значение float можно получить так sys.float_info.max
sys.floatinfo(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2
250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsil
on=2.2204460492503131e-16, radix=2, rounds=1)
есть ли хорошие статьи по тестированию на питоне про граничные значения?
doza_and
Фев. 8, 2014 13:29:53
Если посмотреть библиотеку типа lapack то увидите нечто похожее на приведенный код:
def minflt():
a=1.
while 1:
nv=a/2.
if nv ==0.:
break
a=nv
return a
print("{0:50.50g}".format(minflt()))
>>>
4.9406564584124654417656879286822137236505980261432e-324
в тоже время на этой машине:
>>> sys.float_info
sys.float_info(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16, radix=2, rounds=1)
>>> 2.2250738585072014e-308/minflt()
4503599627370496.0
>>> "{0:10.3e}".format((2.2250738585072014e-308/minflt()))
' 4.504e+15'
:)