999000/1000 = 999.0 999050/1000 = 999.0 // expected 999.1 999100/1000 = 999.1 999150/1000 = 999.1 // expected 999.2 999200/1000 = 999.2 999250/1000 = 999.2 // expected 999.3 999300/1000 = 999.3 999350/1000 = 999.4 999400/1000 = 999.4 999450/1000 = 999.5 999500/1000 = 999.5 999550/1000 = 999.5 // expected 999.6 999600/1000 = 999.6 999650/1000 = 999.6 // expected 999.7 999700/1000 = 999.7 999750/1000 = 999.8 999800/1000 = 999.8 999850/1000 = 999.9 999900/1000 = 999.9 999950/1000 = 1000.0 -999950/1000 = -1000.0 -999900/1000 = -999.9 -999850/1000 = -999.9 -999800/1000 = -999.8 -999750/1000 = -999.8 -999700/1000 = -999.7 -999650/1000 = -999.6 // expected -999.7 -999600/1000 = -999.6 -999550/1000 = -999.5 // expected -999.6 -999500/1000 = -999.5 -999450/1000 = -999.5 -999400/1000 = -999.4 -999350/1000 = -999.4 -999300/1000 = -999.3 -999250/1000 = -999.2 // expected -999.3 -999200/1000 = -999.2 -999150/1000 = -999.1 // expected -999.2 -999100/1000 = -999.1 -999050/1000 = -999.0 // expected -999.1
I have noticed that printf performs an apparently inconsistent rounding of floating point values.I divide a big number by 1000 and printf the resulting value with "%.1f".Here is the code: https://play.golang.org/p/e7dD3c6IHq2
I would expect the rounding rule to be "round away from zero" as defined here: https://math.stackexchange.com/a/2252888/33796In this case 0.5 is rounded to 1 (or 0.05 to 0.1) and -0.5 to -1 (or -0.05 to -0.1).
999000/1000 = 999.0
999050/1000 = 999.1
999100/1000 = 999.1
999150/1000 = 999.2
999200/1000 = 999.2
999250/1000 = 999.3
999300/1000 = 999.3
999350/1000 = 999.4
999400/1000 = 999.4
999450/1000 = 999.5
999500/1000 = 999.5
999550/1000 = 999.6
999600/1000 = 999.6
999650/1000 = 999.7
999700/1000 = 999.7
999750/1000 = 999.8
999800/1000 = 999.8
999850/1000 = 999.9
999900/1000 = 999.9
999950/1000 = 1000.0
-999950/1000 = -1000.0
-999900/1000 = -999.9
-999850/1000 = -999.9
-999800/1000 = -999.8
-999750/1000 = -999.8
-999700/1000 = -999.7
-999650/1000 = -999.7
-999600/1000 = -999.6
-999550/1000 = -999.6
-999500/1000 = -999.5
-999450/1000 = -999.5
-999400/1000 = -999.4
-999350/1000 = -999.4
-999300/1000 = -999.3
-999250/1000 = -999.3
-999200/1000 = -999.2
-999150/1000 = -999.2
-999100/1000 = -999.1
-999050/1000 = -999.1
--
You received this message because you are subscribed to the Google Groups "golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/ee94624c-5485-4daf-98ad-8e59055056dd%40www.fastmail.com.
On Dec 6, 2019, at 10:19 AM, Michael Jones <michae...@gmail.com> wrote:
To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/CALoEmQy%3DMCWgb69GgsZwAv2GT4ar%3DWrdvn212sFK1PfGES1ijw%40mail.gmail.com.