mirror of
https://github.com/MariaDB/server.git
synced 2025-12-24 11:21:21 +03:00
Fix for bug #15936: "round" differs on Windows to Unix
Both of our own implementations of rint(3) were inconsistent with the most common behavior of rint() on those platforms that have it: round to nearest, break ties by rounding to nearest even. Fixed by leaving just one implementation of rint() in our source tree, and changing its behavior to match the most common native implementations on other platforms.
This commit is contained in:
@@ -360,4 +360,34 @@ SELECT a DIV 2 FROM t1 UNION SELECT a DIV 2 FROM t1;
|
||||
a DIV 2
|
||||
0
|
||||
DROP TABLE t1;
|
||||
CREATE TABLE t1 (a DOUBLE);
|
||||
INSERT INTO t1 VALUES (-1.1), (1.1),
|
||||
(-1.5), (1.5),
|
||||
(-1.9), (1.9),
|
||||
(-2.1), (2.1),
|
||||
(-2.5), (2.5),
|
||||
(-2.9), (2.9),
|
||||
# Check numbers with absolute values > 2^53 - 1
|
||||
# (see comments for MAX_EXACT_INTEGER)
|
||||
(-1e16 - 0.5), (1e16 + 0.5),
|
||||
(-1e16 - 1.5), (1e16 + 1.5);
|
||||
SELECT a, ROUND(a) FROM t1;
|
||||
a ROUND(a)
|
||||
-1.1 -1
|
||||
1.1 1
|
||||
-1.5 -2
|
||||
1.5 2
|
||||
-1.9 -2
|
||||
1.9 2
|
||||
-2.1 -2
|
||||
2.1 2
|
||||
-2.5 -2
|
||||
2.5 2
|
||||
-2.9 -3
|
||||
2.9 3
|
||||
-1e+16 -10000000000000000
|
||||
1e+16 10000000000000000
|
||||
-1e+16 -10000000000000002
|
||||
1e+16 10000000000000002
|
||||
DROP TABLE t1;
|
||||
End of 5.0 tests
|
||||
|
||||
Reference in New Issue
Block a user