@@ -232,6 +232,62 @@ def __repr__(self):
232232assert "%e" % 0.1 == '1.000000e-01'
233233assert "%e" % 10 == '1.000000e+01'
234234assert "%.10e" % 1.2345678901234567890 == '1.2345678901e+00'
235+ assert '%e' % float ('nan' ) == 'nan'
236+ assert '%e' % float ('-nan' ) == 'nan'
237+ assert '%E' % float ('nan' ) == 'NAN'
238+ assert '%e' % float ('inf' ) == 'inf'
239+ assert '%e' % float ('-inf' ) == '-inf'
240+ assert '%E' % float ('inf' ) == 'INF'
241+ assert "%g" % 123456.78901234567890 == '123457'
242+ assert "%.0g" % 123456.78901234567890 == '1e+05'
243+ assert "%.1g" % 123456.78901234567890 == '1e+05'
244+ assert "%.2g" % 123456.78901234567890 == '1.2e+05'
245+ assert "%g" % 1234567.8901234567890 == '1.23457e+06'
246+ assert "%.0g" % 1234567.8901234567890 == '1e+06'
247+ assert "%.1g" % 1234567.8901234567890 == '1e+06'
248+ assert "%.2g" % 1234567.8901234567890 == '1.2e+06'
249+ assert "%.3g" % 1234567.8901234567890 == '1.23e+06'
250+ assert "%.5g" % 1234567.8901234567890 == '1.2346e+06'
251+ assert "%.6g" % 1234567.8901234567890 == '1.23457e+06'
252+ assert "%.7g" % 1234567.8901234567890 == '1234568'
253+ assert "%.8g" % 1234567.8901234567890 == '1234567.9'
254+ assert "%G" % 123456.78901234567890 == '123457'
255+ assert "%.0G" % 123456.78901234567890 == '1E+05'
256+ assert "%.1G" % 123456.78901234567890 == '1E+05'
257+ assert "%.2G" % 123456.78901234567890 == '1.2E+05'
258+ assert "%G" % 1234567.8901234567890 == '1.23457E+06'
259+ assert "%.0G" % 1234567.8901234567890 == '1E+06'
260+ assert "%.1G" % 1234567.8901234567890 == '1E+06'
261+ assert "%.2G" % 1234567.8901234567890 == '1.2E+06'
262+ assert "%.3G" % 1234567.8901234567890 == '1.23E+06'
263+ assert "%.5G" % 1234567.8901234567890 == '1.2346E+06'
264+ assert "%.6G" % 1234567.8901234567890 == '1.23457E+06'
265+ assert "%.7G" % 1234567.8901234567890 == '1234568'
266+ assert "%.8G" % 1234567.8901234567890 == '1234567.9'
267+ assert '%g' % 0.12345678901234567890 == '0.123457'
268+ assert '%g' % 0.12345678901234567890e-1 == '0.0123457'
269+ assert '%g' % 0.12345678901234567890e-2 == '0.00123457'
270+ assert '%g' % 0.12345678901234567890e-3 == '0.000123457'
271+ assert '%g' % 0.12345678901234567890e-4 == '1.23457e-05'
272+ assert '%g' % 0.12345678901234567890e-5 == '1.23457e-06'
273+ assert '%.6g' % 0.12345678901234567890e-5 == '1.23457e-06'
274+ assert '%.10g' % 0.12345678901234567890e-5 == '1.23456789e-06'
275+ assert '%.20g' % 0.12345678901234567890e-5 == '1.2345678901234567384e-06'
276+ assert '%G' % 0.12345678901234567890 == '0.123457'
277+ assert '%G' % 0.12345678901234567890E-1 == '0.0123457'
278+ assert '%G' % 0.12345678901234567890E-2 == '0.00123457'
279+ assert '%G' % 0.12345678901234567890E-3 == '0.000123457'
280+ assert '%G' % 0.12345678901234567890E-4 == '1.23457E-05'
281+ assert '%G' % 0.12345678901234567890E-5 == '1.23457E-06'
282+ assert '%.6G' % 0.12345678901234567890E-5 == '1.23457E-06'
283+ assert '%.10G' % 0.12345678901234567890E-5 == '1.23456789E-06'
284+ assert '%.20G' % 0.12345678901234567890E-5 == '1.2345678901234567384E-06'
285+ assert '%g' % float ('nan' ) == 'nan'
286+ assert '%g' % float ('-nan' ) == 'nan'
287+ assert '%G' % float ('nan' ) == 'NAN'
288+ assert '%g' % float ('inf' ) == 'inf'
289+ assert '%g' % float ('-inf' ) == '-inf'
290+ assert '%G' % float ('inf' ) == 'INF'
235291
236292assert_raises (TypeError , lambda : "My name is %s and I'm %(age)d years old" % ("Foo" , 25 ), _msg = 'format requires a mapping' )
237293assert_raises (TypeError , lambda : "My name is %(name)s" % "Foo" , _msg = 'format requires a mapping' )
@@ -477,6 +533,57 @@ def try_mutate_str():
477533assert '{:e}' .format (float ('-inf' )) == '-inf'
478534assert '{:E}' .format (float ('inf' )) == 'INF'
479535
536+ # Test g & G formatting
537+ assert '{:g}' .format (123456.78901234567890 ) == '123457'
538+ assert '{:.0g}' .format (123456.78901234567890 ) == '1e+05'
539+ assert '{:.1g}' .format (123456.78901234567890 ) == '1e+05'
540+ assert '{:.2g}' .format (123456.78901234567890 ) == '1.2e+05'
541+ assert '{:g}' .format (1234567.8901234567890 ) == '1.23457e+06'
542+ assert '{:.0g}' .format (1234567.8901234567890 ) == '1e+06'
543+ assert '{:.1g}' .format (1234567.8901234567890 ) == '1e+06'
544+ assert '{:.2g}' .format (1234567.8901234567890 ) == '1.2e+06'
545+ assert '{:.3g}' .format (1234567.8901234567890 ) == '1.23e+06'
546+ assert '{:.5g}' .format (1234567.8901234567890 ) == '1.2346e+06'
547+ assert '{:.6g}' .format (1234567.8901234567890 ) == '1.23457e+06'
548+ assert '{:.7g}' .format (1234567.8901234567890 ) == '1234568'
549+ assert '{:.8g}' .format (1234567.8901234567890 ) == '1234567.9'
550+ assert '{:G}' .format (123456.78901234567890 ) == '123457'
551+ assert '{:.0G}' .format (123456.78901234567890 ) == '1E+05'
552+ assert '{:.1G}' .format (123456.78901234567890 ) == '1E+05'
553+ assert '{:.2G}' .format (123456.78901234567890 ) == '1.2E+05'
554+ assert '{:G}' .format (1234567.8901234567890 ) == '1.23457E+06'
555+ assert '{:.0G}' .format (1234567.8901234567890 ) == '1E+06'
556+ assert '{:.1G}' .format (1234567.8901234567890 ) == '1E+06'
557+ assert '{:.2G}' .format (1234567.8901234567890 ) == '1.2E+06'
558+ assert '{:.3G}' .format (1234567.8901234567890 ) == '1.23E+06'
559+ assert '{:.5G}' .format (1234567.8901234567890 ) == '1.2346E+06'
560+ assert '{:.6G}' .format (1234567.8901234567890 ) == '1.23457E+06'
561+ assert '{:.7G}' .format (1234567.8901234567890 ) == '1234568'
562+ assert '{:.8G}' .format (1234567.8901234567890 ) == '1234567.9'
563+ assert '{:g}' .format (0.12345678901234567890 ) == '0.123457'
564+ assert '{:g}' .format (0.12345678901234567890e-1 ) == '0.0123457'
565+ assert '{:g}' .format (0.12345678901234567890e-2 ) == '0.00123457'
566+ assert '{:g}' .format (0.12345678901234567890e-3 ) == '0.000123457'
567+ assert '{:g}' .format (0.12345678901234567890e-4 ) == '1.23457e-05'
568+ assert '{:g}' .format (0.12345678901234567890e-5 ) == '1.23457e-06'
569+ assert '{:.6g}' .format (0.12345678901234567890e-5 ) == '1.23457e-06'
570+ assert '{:.10g}' .format (0.12345678901234567890e-5 ) == '1.23456789e-06'
571+ assert '{:.20g}' .format (0.12345678901234567890e-5 ) == '1.2345678901234567384e-06'
572+ assert '{:G}' .format (0.12345678901234567890 ) == '0.123457'
573+ assert '{:G}' .format (0.12345678901234567890E-1 ) == '0.0123457'
574+ assert '{:G}' .format (0.12345678901234567890E-2 ) == '0.00123457'
575+ assert '{:G}' .format (0.12345678901234567890E-3 ) == '0.000123457'
576+ assert '{:G}' .format (0.12345678901234567890E-4 ) == '1.23457E-05'
577+ assert '{:G}' .format (0.12345678901234567890E-5 ) == '1.23457E-06'
578+ assert '{:.6G}' .format (0.12345678901234567890E-5 ) == '1.23457E-06'
579+ assert '{:.10G}' .format (0.12345678901234567890E-5 ) == '1.23456789E-06'
580+ assert '{:.20G}' .format (0.12345678901234567890E-5 ) == '1.2345678901234567384E-06'
581+ assert '{:g}' .format (float ('nan' )) == 'nan'
582+ assert '{:g}' .format (float ('-nan' )) == 'nan'
583+ assert '{:G}' .format (float ('nan' )) == 'NAN'
584+ assert '{:g}' .format (float ('inf' )) == 'inf'
585+ assert '{:g}' .format (float ('-inf' )) == '-inf'
586+ assert '{:G}' .format (float ('inf' )) == 'INF'
480587
481588# remove*fix test
482589def test_removeprefix ():
0 commit comments