@@ -232,6 +232,62 @@ def __repr__(self):
232
232
assert "%e" % 0.1 == '1.000000e-01'
233
233
assert "%e" % 10 == '1.000000e+01'
234
234
assert "%.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'
235
291
236
292
assert_raises (TypeError , lambda : "My name is %s and I'm %(age)d years old" % ("Foo" , 25 ), _msg = 'format requires a mapping' )
237
293
assert_raises (TypeError , lambda : "My name is %(name)s" % "Foo" , _msg = 'format requires a mapping' )
@@ -477,6 +533,57 @@ def try_mutate_str():
477
533
assert '{:e}' .format (float ('-inf' )) == '-inf'
478
534
assert '{:E}' .format (float ('inf' )) == 'INF'
479
535
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'
480
587
481
588
# remove*fix test
482
589
def test_removeprefix ():
0 commit comments