Fix overflowed integral digits always prepended in string formatter.

This commit is contained in:
2023-02-05 22:03:31 +08:00
parent 300e44bd4b
commit b166c0f5ef

View File

@@ -211,8 +211,7 @@ namespace System.Text.Formatting {
remainingDigitsInGroup -= groupSize;
groupIndex++;
}
if (number.Scale > integralDigits) while (currentDigitIndex < number.Scale - integralDigits)
formatter.AppendIntegralDigit(ref number, ref currentDigitIndex, culture, groupFlag, ref groupIndex, ref remainingDigitsInGroup);
bool appendingDigitFlag = false;
decimalFlag = false;
for (index = start; index < end; index++) {
switch (ptr[index]) {
@@ -228,6 +227,11 @@ namespace System.Text.Formatting {
break;
case '0':
case '#':
if (!appendingDigitFlag) {
if (number.Scale > integralDigits) while (currentDigitIndex < number.Scale - integralDigits)
formatter.AppendIntegralDigit(ref number, ref currentDigitIndex, culture, groupFlag, ref groupIndex, ref remainingDigitsInGroup);
appendingDigitFlag = true;
}
if (decimalFlag) {
if (currentDigitIndex < number.Precision) {
char digit = number.Digits[currentDigitIndex++];