diff --git a/src/OneScript.Core/Commons/ValueFormatter.cs b/src/OneScript.Core/Commons/ValueFormatter.cs index 638c9e32e..718e41291 100644 --- a/src/OneScript.Core/Commons/ValueFormatter.cs +++ b/src/OneScript.Core/Commons/ValueFormatter.cs @@ -104,14 +104,15 @@ public static string FormatNumber(decimal num, FormatParametersList formatParame string param; string zeroAppearance; - if (formatParameters.HasParam(NUM_ZERO_APPEARANCE, out param)) + if (formatParameters.HasParam(NUM_ZERO_APPEARANCE, out zeroAppearance)) { - zeroAppearance = (param == "") ? "0" : param; + if (zeroAppearance == "") + zeroAppearance = null; } else zeroAppearance = ""; - if (num == 0) + if (num == 0 && zeroAppearance is not null) { return zeroAppearance; } @@ -174,7 +175,7 @@ public static string FormatNumber(decimal num, FormatParametersList formatParame { bool overflov = !ApplyNumericSizeRestrictions(ref num, totalDigits, fractionDigits); ; - if (num == 0) + if (num == 0 && zeroAppearance is not null) return zeroAppearance; if (totalDigits == 0) diff --git a/tests/formatting.os b/tests/formatting.os index 62744d923..571306640 100644 --- a/tests/formatting.os +++ b/tests/formatting.os @@ -93,6 +93,7 @@ юТест.ПроверитьРавенство("0.12346", Формат(Дробь, "ЧЦ=0; ЧДЦ=5; L=en_US")); юТест.ПроверитьРавенство("", Формат(Дробь, "ЧЦ=5; ЧДЦ=0; L=en_US")); юТест.ПроверитьРавенство("Z", Формат(Дробь, "ЧЦ=5; ЧДЦ=0; ЧН=Z; L=en_US")); + юТест.ПроверитьРавенство("00,000", Формат(Дробь, "ЧЦ=5; ЧДЦ=0; ЧН=; ЧВН=; L=en_US")); Дробь = 3.123456789; юТест.ПроверитьРавенство("3.123457", Формат(Дробь, "ЧДЦ=6; L=en_US")); @@ -186,6 +187,7 @@ юТест.ПроверитьРавенство("НОЛЬ", Формат(0, "ЧН='НОЛЬ';")); юТест.ПроверитьРавенство("0", Формат(0, "ЧН='';")); юТест.ПроверитьРавенство(" ", Формат(0, "ЧН=' ';")); + юТест.ПроверитьРавенство("00,000.00", Формат(0, "ЧЦ=7; ЧН=; ЧДЦ=2; ЧВН=; L=en_US")); КонецПроцедуры