diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2017-05-26 09:54:10 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2017-05-26 09:54:10 +0900 |
| commit | 83fc915213b23b798ea1afef55fddc0836207a83 (patch) | |
| tree | 88509b29e278c185308ea676fa465ac4dbe97425 /include | |
| parent | 3c312782368e2854c75c56d2008a5cbd78b70dfa (diff) | |
| download | mruby-83fc915213b23b798ea1afef55fddc0836207a83.tar.gz mruby-83fc915213b23b798ea1afef55fddc0836207a83.zip | |
Add new range check macro FIXABLE_FLOAT(); ref #3652
When MRB_INT64, valid value range of mrb_int is bigger than double,
which only has 53 bits significant precision.
Diffstat (limited to 'include')
| -rw-r--r-- | include/mruby/numeric.h | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/include/mruby/numeric.h b/include/mruby/numeric.h index 36489b1ce..e4c1a2f56 100644 --- a/include/mruby/numeric.h +++ b/include/mruby/numeric.h @@ -20,6 +20,12 @@ MRB_BEGIN_DECL #define NEGFIXABLE(f) ((f) >= MRB_INT_MIN) #define FIXABLE(f) (POSFIXABLE(f) && NEGFIXABLE(f)) +#ifdef MRB_INT64 +#define FIXABLE_FLOAT(f) FIXABLE((mrb_int)(f)) +#else +#define FIXABLE_FLOAT(f) FIXABLE(f) +#endif + MRB_API mrb_value mrb_flo_to_fixnum(mrb_state *mrb, mrb_value val); MRB_API mrb_value mrb_fixnum_to_str(mrb_state *mrb, mrb_value x, int base); /* ArgumentError if format string doesn't match /%(\.[0-9]+)?[aAeEfFgG]/ */ |
