floating accuracy - how to avoid inaccuracy in multiplications and divisions in python -
i working python , playing multiplications , divisions can't accuracy want operations. following example may reach point.
let a = 3 , b = 4, euclidean norm (sqrt(a*a + b*b)) 5.0, , divisions work fine, 3/5.0 0.6, , 4/5.0 = 0.8. when want make following 3 * -0.8 + 0.6*4 answer little number not expected zero.
i know problems inherent data type, registers , in general machine limits, think there must way @ least simple computations (like example) made no errors.
you can use fraction accurate answer:
>>> fractions import fraction >>> fraction(-8, 10) * 3 + fraction(6, 10) * 4 fraction(0, 1) or use decimal:
>>> decimal import decimal >>> decimal('-0.8') * 3 + decimal('0.6') * 4 decimal('0.0') beware of string used in decimals: using normal numbers make decimals use inaccurate value of number.
Comments
Post a Comment