From ec26c1e98596e5c84d2d2deb3abf76b1a02341b8 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 29 Nov 2005 18:06:58 +0400 Subject: Addition to fix for bug #12956: cast make differ rounding. - use rint() in some other val_int() methods as well. --- sql/field.cc | 4 ++-- sql/item.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/sql/field.cc b/sql/field.cc index b70e2a92618..6de2a731030 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -3953,7 +3953,7 @@ longlong Field_float::val_int(void) else #endif memcpy_fixed((byte*) &j,ptr,sizeof(j)); - return ((longlong) j); + return (longlong) rint(j); } @@ -4241,7 +4241,7 @@ longlong Field_double::val_int(void) else #endif doubleget(j,ptr); - return ((longlong) j); + return (longlong) rint(j); } diff --git a/sql/item.h b/sql/item.h index 3c03cd23e2c..718b995bc5a 100644 --- a/sql/item.h +++ b/sql/item.h @@ -159,7 +159,7 @@ struct Hybrid_type_traits { val->real/= ulonglong2double(u); } virtual longlong val_int(Hybrid_type *val, bool unsigned_flag) const - { return (longlong) val->real; } + { return (longlong) rint(val->real); } virtual double val_real(Hybrid_type *val) const { return val->real; } virtual my_decimal *val_decimal(Hybrid_type *val, my_decimal *buf) const; virtual String *val_str(Hybrid_type *val, String *buf, uint8 decimals) const; @@ -1341,7 +1341,7 @@ public: { return LONGLONG_MAX; } - return (longlong) (value+(value > 0 ? 0.5 : -0.5)); + return (longlong) rint(value); } String *val_str(String*); my_decimal *val_decimal(my_decimal *); -- cgit v1.2.1