From 6cbcce79e49c0467d4504132901dceae40d1e182 Mon Sep 17 00:00:00 2001 From: wangjian Date: Mon, 24 Jul 2023 15:53:04 +0800 Subject: [PATCH 1/4] =?UTF-8?q?Signed-off-by:=E7=8E=8B=E5=89=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wangjian --- frameworks/i18n/src/number_format_impl.cpp | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/frameworks/i18n/src/number_format_impl.cpp b/frameworks/i18n/src/number_format_impl.cpp index cfaa927..d050377 100644 --- a/frameworks/i18n/src/number_format_impl.cpp +++ b/frameworks/i18n/src/number_format_impl.cpp @@ -129,22 +129,18 @@ std::string NumberFormatImpl::InnerFormat(double num, bool hasDec, bool isShowGr } char buff[NUMBER_MAX] = { 0 }; bool isPercentDefault = isPercent && (defaultData->style.minDecimalLength < 0); - int len; double adjustNum = (num < 0) ? (-1 * num) : num; - if (isPercentDefault) { + int len = static_cast(sprintf_s(buff, NUMBER_MAX, defaultData->style.numFormat, adjustNum)); + if (isPercent) { len = static_cast(sprintf_s(buff, NUMBER_MAX, "%.f", adjustNum)); - } else { - len = static_cast(sprintf_s(buff, NUMBER_MAX, defaultData->style.numFormat, adjustNum)); } - // convert decimal to char and format if (len < 0) { status = IERROR; return ""; } char *decimalNum = strchr(buff, NumberData::NUMBER_DECIMAL); int decLen = (decimalNum == nullptr) ? 0 : strlen(decimalNum); - int adjustIntLength = len - decLen; - int lastLen = isShowGroup ? (len + CountGroupNum(adjustIntLength, defaultData->style.isTwoGroup)) : len; + int lastLen = isShowGroup ? (len + CountGroupNum(len - decLen, defaultData->style.isTwoGroup)) : len; char *result = reinterpret_cast(I18nMalloc(lastLen + 1)); if (result == nullptr) { status = IERROR; @@ -163,14 +159,11 @@ std::string NumberFormatImpl::InnerFormat(double num, bool hasDec, bool isShowGr return ""; } } - // del more zero lastLen = DelMoreZero(defaultData->style, decLen, lastLen, adjustHasDec, result); - // if percent if (isPercent && !DealWithPercent(buff, result, status, defaultData->style, lastLen)) { I18nFree(static_cast(result)); return ""; } - // if have native number to convert std::string outStr = ConvertSignAndNum(result, lastLen, defaultData, defaultData->style); I18nFree(static_cast(result)); if (num < 0) { -- Gitee From 100622f5500a0c10be727c9008c98dc436708825 Mon Sep 17 00:00:00 2001 From: wangjian Date: Mon, 24 Jul 2023 16:54:05 +0800 Subject: [PATCH 2/4] =?UTF-8?q?Signed-off-by:=E7=8E=8B=E5=89=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wangjian --- frameworks/i18n/src/number_format_impl.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/frameworks/i18n/src/number_format_impl.cpp b/frameworks/i18n/src/number_format_impl.cpp index d050377..0accb8c 100644 --- a/frameworks/i18n/src/number_format_impl.cpp +++ b/frameworks/i18n/src/number_format_impl.cpp @@ -134,6 +134,7 @@ std::string NumberFormatImpl::InnerFormat(double num, bool hasDec, bool isShowGr if (isPercent) { len = static_cast(sprintf_s(buff, NUMBER_MAX, "%.f", adjustNum)); } + // convert decimal to char and format if (len < 0) { status = IERROR; return ""; @@ -159,11 +160,14 @@ std::string NumberFormatImpl::InnerFormat(double num, bool hasDec, bool isShowGr return ""; } } + // del more zero lastLen = DelMoreZero(defaultData->style, decLen, lastLen, adjustHasDec, result); + // if percent if (isPercent && !DealWithPercent(buff, result, status, defaultData->style, lastLen)) { I18nFree(static_cast(result)); return ""; } + // if have native number to convert std::string outStr = ConvertSignAndNum(result, lastLen, defaultData, defaultData->style); I18nFree(static_cast(result)); if (num < 0) { -- Gitee From 65e46523d30051501a2902f9a9343cb02d7937ac Mon Sep 17 00:00:00 2001 From: wangjian <616318723@qq.com> Date: Mon, 7 Aug 2023 11:43:28 +0000 Subject: [PATCH 3/4] =?UTF-8?q?Signed-off-by:=E7=8E=8B=E5=89=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wangjian <616318723@qq.com> --- frameworks/i18n/src/number_format_impl.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/frameworks/i18n/src/number_format_impl.cpp b/frameworks/i18n/src/number_format_impl.cpp index 0accb8c..d2a6d73 100644 --- a/frameworks/i18n/src/number_format_impl.cpp +++ b/frameworks/i18n/src/number_format_impl.cpp @@ -130,10 +130,8 @@ std::string NumberFormatImpl::InnerFormat(double num, bool hasDec, bool isShowGr char buff[NUMBER_MAX] = { 0 }; bool isPercentDefault = isPercent && (defaultData->style.minDecimalLength < 0); double adjustNum = (num < 0) ? (-1 * num) : num; - int len = static_cast(sprintf_s(buff, NUMBER_MAX, defaultData->style.numFormat, adjustNum)); - if (isPercent) { - len = static_cast(sprintf_s(buff, NUMBER_MAX, "%.f", adjustNum)); - } + int len = isPercent ? static_cast(sprintf_s(buff, NUMBER_MAX, "%.f", adjustNum)) : + static_cast(sprintf_s(buff, NUMBER_MAX, defaultData->style.numFormat, adjustNum)); // convert decimal to char and format if (len < 0) { status = IERROR; -- Gitee From a0e5b663174df18454bf7efd8d38e0b788f90ae2 Mon Sep 17 00:00:00 2001 From: wangjian <616318723@qq.com> Date: Mon, 7 Aug 2023 11:46:54 +0000 Subject: [PATCH 4/4] =?UTF-8?q?Signed-off-by:=E7=8E=8B=E5=89=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: wangjian <616318723@qq.com> --- frameworks/i18n/src/number_format_impl.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frameworks/i18n/src/number_format_impl.cpp b/frameworks/i18n/src/number_format_impl.cpp index d2a6d73..0c13a0c 100644 --- a/frameworks/i18n/src/number_format_impl.cpp +++ b/frameworks/i18n/src/number_format_impl.cpp @@ -130,8 +130,8 @@ std::string NumberFormatImpl::InnerFormat(double num, bool hasDec, bool isShowGr char buff[NUMBER_MAX] = { 0 }; bool isPercentDefault = isPercent && (defaultData->style.minDecimalLength < 0); double adjustNum = (num < 0) ? (-1 * num) : num; - int len = isPercent ? static_cast(sprintf_s(buff, NUMBER_MAX, "%.f", adjustNum)) : - static_cast(sprintf_s(buff, NUMBER_MAX, defaultData->style.numFormat, adjustNum)); + int len = isPercentDefault ? static_cast(sprintf_s(buff, NUMBER_MAX, "%.f", adjustNum)) : + static_cast(sprintf_s(buff, NUMBER_MAX, defaultData->style.numFormat, adjustNum)); // convert decimal to char and format if (len < 0) { status = IERROR; -- Gitee