Skip to content

Commit 307e533

Browse files
authoredJul 12, 2024
This closes qax-os#1942, fix percent sign missing in formatted result for zero numeric cell value (qax-os#1947)
- Updated unit tests
1 parent 431c310 commit 307e533

File tree

2 files changed

+15
-22
lines changed

2 files changed

+15
-22
lines changed
 

‎numfmt.go

+11-21
Original file line numberDiff line numberDiff line change
@@ -4799,10 +4799,8 @@ func format(value, numFmt string, date1904 bool, cellType CellType, opts *Option
47994799
switch section.Type {
48004800
case nfp.TokenSectionPositive:
48014801
return nf.alignmentHandler(nf.positiveHandler())
4802-
case nfp.TokenSectionNegative:
4803-
return nf.alignmentHandler(nf.negativeHandler())
48044802
default:
4805-
return nf.alignmentHandler(nf.zeroHandler())
4803+
return nf.alignmentHandler(nf.negativeHandler())
48064804
}
48074805
}
48084806
return nf.alignmentHandler(nf.textHandler())
@@ -7108,11 +7106,6 @@ func (nf *numberFormat) negativeHandler() (result string) {
71087106
return nf.numberHandler()
71097107
}
71107108

7111-
// zeroHandler will be handling zero selection for a number format expression.
7112-
func (nf *numberFormat) zeroHandler() string {
7113-
return nf.value
7114-
}
7115-
71167109
// textHandler will be handling text selection for a number format expression.
71177110
func (nf *numberFormat) textHandler() (result string) {
71187111
for _, token := range nf.section[nf.sectionIdx].Items {
@@ -7137,21 +7130,18 @@ func (nf *numberFormat) getValueSectionType(value string) (float64, string) {
71377130
return 0, nfp.TokenSectionText
71387131
}
71397132
number, _ := strconv.ParseFloat(value, 64)
7140-
if number > 0 {
7133+
if number >= 0 {
71417134
return number, nfp.TokenSectionPositive
71427135
}
7143-
if number < 0 {
7144-
var hasNeg bool
7145-
for _, sec := range nf.section {
7146-
if sec.Type == nfp.TokenSectionNegative {
7147-
hasNeg = true
7148-
}
7149-
}
7150-
if !hasNeg {
7151-
nf.usePositive = true
7152-
return number, nfp.TokenSectionPositive
7136+
var hasNeg bool
7137+
for _, sec := range nf.section {
7138+
if sec.Type == nfp.TokenSectionNegative {
7139+
hasNeg = true
71537140
}
7154-
return number, nfp.TokenSectionNegative
71557141
}
7156-
return number, nfp.TokenSectionZero
7142+
if !hasNeg {
7143+
nf.usePositive = true
7144+
return number, nfp.TokenSectionPositive
7145+
}
7146+
return number, nfp.TokenSectionNegative
71577147
}

‎numfmt_test.go

+4-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,10 @@ func TestNumFmt(t *testing.T) {
6969
{"0.97952546296296295", "h:m", "23:30"},
7070
{"43528", "mmmm", "March"},
7171
{"43528", "dddd", "Monday"},
72-
{"0", ";;;", "0"},
72+
{"0", ";;;", ""},
73+
{"0", "0%", "0%"},
74+
{"0", "0.0%", "0.0%"},
75+
{"0", "0.00%", "0.00%"},
7376
{"43528", "[$-409]MM/DD/YYYY", "03/04/2019"},
7477
{"43528", "[$-409]MM/DD/YYYY am/pm", "03/04/2019 AM"},
7578
{"43528", "[$-111]MM/DD/YYYY", "43528"},

0 commit comments

Comments
 (0)
Please sign in to comment.