diff --git a/lib/roo/excelx/cell/number.rb b/lib/roo/excelx/cell/number.rb index 5cd9b552..59f95014 100644 --- a/lib/roo/excelx/cell/number.rb +++ b/lib/roo/excelx/cell/number.rb @@ -53,9 +53,10 @@ def generate_formatter(format) proc do |number| Kernel.format('%d%%', number.to_f * 100) end - when '0.00%' + when /0\.0+%/ + precision = format.match(/0\.(0+)%/)[1].length proc do |number| - Kernel.format('%.2f%%', number.to_f * 100) + Kernel.format("%.#{precision}f%%", number.to_f * 100) end when '0.00E+00' then '%.2E' when '#,##0 ;(#,##0)' then number_format('%.0f', '(%.0f)') diff --git a/test/excelx/cell/test_number.rb b/test/excelx/cell/test_number.rb index ddcffeb4..7528d828 100644 --- a/test/excelx/cell/test_number.rb +++ b/test/excelx/cell/test_number.rb @@ -68,6 +68,7 @@ def test_formats ['#,##0.00', '1,042.00'], ['#,##0.000', '1,042.000'], ['0%', '104200%'], + ['0.0%', '104200.0%'], ['0.00%', '104200.00%'], ['0.00E+00', '1.04E+03'], ['#,##0 ;(#,##0)', '1,042'],