On Sun, Nov 6, 2011 at 1:31 PM, Lorenzo Battistini < [email protected]> wrote:
> 2011/11/6 Ovnicraft <[email protected]>: > >> > >> >>> round(2.675, 2) > >> 2.67 > > > > The '2' number is defined in currency. > > I perfectly know that. I was doing a python question. If you type > 'round(2.675, 2)', python says '2.67', while it should be 2.68. > Citing the page I was referring to: > You sure? i get: 2.6800000000000002, please check my attach. Regards, > > "The documentation for the built-in round() function says that it > rounds to the nearest value, rounding ties away from zero. Since the > decimal fraction 2.675 is exactly halfway between 2.67 and 2.68, you > might expect the result here to be (a binary approximation to) 2.68. > It’s not, because when the decimal string 2.675 is converted to a > binary floating-point number, it’s again replaced with a binary > approximation, whose exact value is > > 2.67499999999999982236431605997495353221893310546875 > > Since this approximation is slightly closer to 2.67 than to 2.68, it’s > rounded down. > > If you’re in a situation where you care which way your decimal > halfway-cases are rounded, you should consider using the decimal > module. Incidentally, the decimal module also provides a nice way to > “see” the exact value that’s stored in any particular Python float" > > > -- > Lorenzo Battistini > -- Cristian Salamea @ovnicraft
<<attachment: round.png>>
_______________________________________________ Mailing list: https://launchpad.net/~openerp-expert-accounting Post to : [email protected] Unsubscribe : https://launchpad.net/~openerp-expert-accounting More help : https://help.launchpad.net/ListHelp

