I have come to an inexplicable (at least for me at the moment) behavior in Julia
julia> using Dates
julia> Dates.value(Minute(60)) / 1 * 38.849
2330.9399999999996
julia> Dates.value(Dates.value(Minute(60)) * 38.849
2330.9399999999996
julia> Dates.value(Minute(60)) / 10 * 38.849
233.094
julia> Dates.value(Minute(60)) * 3.8849
233.094
Can you explain why the first two don’t yield the same precision as the two latest?
This isn’t about Dates
, but rather that floating point arithmetic doesn’t work quite how one may expect. See:
3.8849 == 38.849/10 # false
This isn’t even about Julia, since Julia implements the industry standard IEEE 754 that most languages do.
Essentially, if you’re using floats you can’t usually use ==
as the order of operations can matter and slight differences can occur.
2 Likes
nilshg
3
That question is common enough that there’s a PSA:
5 Likes
Thanks for your replies
Just in case for future readers, what I actually wanted to ask has it answers here