This commit is contained in:
Yash Sharma 2025-06-27 11:58:36 -07:00 committed by GitHub
commit 5aff858653
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -11,16 +11,18 @@ namespace UnitConversionManager::NumberFormattingUtils
/// <param name="number">number to trim</param> /// <param name="number">number to trim</param>
void TrimTrailingZeros(_Inout_ wstring& number) void TrimTrailingZeros(_Inout_ wstring& number)
{ {
//check if the number contains a decimal point.
if (number.find(L'.') == wstring::npos) if (number.find(L'.') == wstring::npos)
{ {
return; return; //no trailing zeros or decimal to trim.
} }
//find the last non-zero digit and erase and triling zeros.
if (auto i = number.find_last_not_of(L'0'); i != wstring::npos) if (auto i = number.find_last_not_of(L'0'); i != wstring::npos)
{ {
number.erase(number.cbegin() + i + 1, number.cend()); number.erase(number.cbegin() + i + 1, number.cend());
} }
//remove the trailing decimal point if it exists.
if (number.back() == L'.') if (number.back() == L'.')
{ {
number.pop_back(); number.pop_back();
@ -32,12 +34,15 @@ namespace UnitConversionManager::NumberFormattingUtils
/// <param name="value">the number</param> /// <param name="value">the number</param>
unsigned int GetNumberDigits(wstring value) unsigned int GetNumberDigits(wstring value)
{ {
//trim trailing zeros and decimal point.
TrimTrailingZeros(value); TrimTrailingZeros(value);
unsigned int numberSignificantDigits = static_cast<unsigned int>(value.size()); unsigned int numberSignificantDigits = static_cast<unsigned int>(value.size());
//if the number contains a decimal point, reduce the count by one.
if (value.find(L'.') != wstring::npos) if (value.find(L'.') != wstring::npos)
{ {
--numberSignificantDigits; --numberSignificantDigits;
} }
//if the number is negative, reduce the count by one
if (value.find(L'-') != wstring::npos) if (value.find(L'-') != wstring::npos)
{ {
--numberSignificantDigits; --numberSignificantDigits;