> On 24 Oct 2014, at 19:06, Marc Bennewitz <php@mabe.berlin> wrote: > > > On 24.10.2014 01:53, Andrea Faulds wrote: >>> On 23 Oct 2014, at 20:50, Marc Bennewitz <php@mabe.berlin> wrote: >>> >>> You addresses data loss on convert float to int. >>> Do you also address data loss on int to float? >>> >>> |to_float(||9223372036854774784) -> pass |as it results in >>> 9223372036854774784 >>> |to_float(|||9223372036854774785|) -> |fail as it results in >>> 9223372036854774784 >> Floats aren’t expected to be precise, so I don’t see why this shouldn’t >> pass. It’s a loss of data, sure, but merely of precision, which is expected >> here. The reason I have to_int fail is because float overflow to int >> completely mangles your input. >> ... It’s a loss of data ... > And that is the point! If you don't care about loss of data we have more > than enough functions including default casting (float) operator to cast > to float.
Floats are special, they are not expected to be precise. If we reject this, then perhaps we should also reject 0.1, because it can’t be precisely represented by a float? -- Andrea Faulds http://ajf.me/ -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php