From 8936d15efa27663458a7185f29bd662e4dfc585d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Musab=20K=C4=B1l=C4=B1=C3=A7?= Date: Fri, 29 Oct 2021 19:51:11 +0300 Subject: [PATCH] Calculator: Improve KeypadValue conversion to handle integer values --- Userland/Applications/Calculator/KeypadValue.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/Userland/Applications/Calculator/KeypadValue.cpp b/Userland/Applications/Calculator/KeypadValue.cpp index fbd658bddc..b677943515 100644 --- a/Userland/Applications/Calculator/KeypadValue.cpp +++ b/Userland/Applications/Calculator/KeypadValue.cpp @@ -105,9 +105,12 @@ KeypadValue::KeypadValue(double d) while (AK::pow(10.0, (double)current_pow) <= d) current_pow += 1; current_pow -= 1; - while (d != 0) { + double epsilon = 1e-6; + while (d >= epsilon || current_pow >= 0) { m_value *= 10; - m_value += (u64)(d / AK::pow(10.0, (double)current_pow)) % 10; + i8 digit = (u64)(d * AK::pow(0.1, (double)current_pow)) % 10; + m_value += digit; + d -= digit * AK::pow(10.0, (double)current_pow); if (current_pow < 0) m_decimal_places += 1; current_pow -= 1;