summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorMasaki Muranaka <[email protected]>2013-03-29 21:56:41 +0900
committerMasaki Muranaka <[email protected]>2013-03-29 22:19:26 +0900
commitf82ae7653a53946fa14ed7a334b686265dc63dd3 (patch)
treea954b6e7db8c914a078a9ae2447a5f8beebc7ff7 /src
parent710f6252548f4a0eaf16a7b0d4d973a50e4520c0 (diff)
downloadmruby-f82ae7653a53946fa14ed7a334b686265dc63dd3.tar.gz
mruby-f82ae7653a53946fa14ed7a334b686265dc63dd3.zip
Change the second argument of mrb_flo_to_str().
Export mrb_flo_to_str() as API.
Diffstat (limited to 'src')
-rw-r--r--src/numeric.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/numeric.c b/src/numeric.c
index 02a18c130..c24e84958 100644
--- a/src/numeric.c
+++ b/src/numeric.c
@@ -163,13 +163,19 @@ num_abs(mrb_state *mrb, mrb_value num)
*/
mrb_value
-mrb_flo_to_str(mrb_state *mrb, mrb_float n, int max_digit)
+mrb_flo_to_str(mrb_state *mrb, mrb_value flo, int max_digit)
{
mrb_value result;
+ mrb_float n;
if (max_digit > 40) {
mrb_raise(mrb, E_RANGE_ERROR, "Too large max_digit.");
}
+ else if (!mrb_float_p(flo)) {
+ mrb_raise(mrb, E_TYPE_ERROR, "non float value");
+ }
+
+ n = mrb_float(flo);
if (isnan(n)) {
result = mrb_str_new(mrb, "NaN", 3);
@@ -270,9 +276,9 @@ static mrb_value
flo_to_s(mrb_state *mrb, mrb_value flt)
{
#ifdef MRB_USE_FLOAT
- return mrb_flo_to_str(mrb, mrb_float(flt), 7);
+ return mrb_flo_to_str(mrb, flt, 7);
#else
- return mrb_flo_to_str(mrb, mrb_float(flt), 14);
+ return mrb_flo_to_str(mrb, flt, 14);
#endif
}