From b82f1c2ec0bee06161a45c057aaf0d72bab2b394 Mon Sep 17 00:00:00 2001 From: Yasuhiro Matsumoto Date: Thu, 16 Apr 2026 14:41:01 +0900 Subject: [PATCH] readfloat.c: keep one extra fraction digit (17 -> 18) 18 decimal digits still fit in uint64_t (max ~1.8e19), so we can hold one more digit of precision without overflow risk. --- src/readfloat.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/readfloat.c b/src/readfloat.c index 8de734a32..cb23d7f71 100644 --- a/src/readfloat.c +++ b/src/readfloat.c @@ -144,7 +144,7 @@ mrb_read_float(const char *str, char **endp, double *fp) // Parse fractional part if (*p == '.') { p++; - while (ISDIGIT(*p) && frac_digits < 17) { // Limit precision to avoid overflow + while (ISDIGIT(*p) && frac_digits < 18) { // Limit precision to avoid overflow frac_part = frac_part * 10 + (*p - '0'); frac_digits++; digits++;