@@ -232,6 +232,73 @@ 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'
291
+ assert "%.0g" % 1.020e-13 == '1e-13'
292
+ assert "%.0g" % 1.020e-13 == '1e-13'
293
+ assert "%.1g" % 1.020e-13 == '1e-13'
294
+ assert "%.2g" % 1.020e-13 == '1e-13'
295
+ assert "%.3g" % 1.020e-13 == '1.02e-13'
296
+ assert "%.4g" % 1.020e-13 == '1.02e-13'
297
+ assert "%.5g" % 1.020e-13 == '1.02e-13'
298
+ assert "%.6g" % 1.020e-13 == '1.02e-13'
299
+ assert "%.7g" % 1.020e-13 == '1.02e-13'
300
+ assert "%g" % 1.020e-13 == '1.02e-13'
301
+ assert "%g" % 1.020e-4 == '0.000102'
235
302
236
303
assert_raises (TypeError , lambda : "My name is %s and I'm %(age)d years old" % ("Foo" , 25 ), _msg = 'format requires a mapping' )
237
304
assert_raises (TypeError , lambda : "My name is %(name)s" % "Foo" , _msg = 'format requires a mapping' )
@@ -477,6 +544,68 @@ def try_mutate_str():
477
544
assert '{:e}' .format (float ('-inf' )) == '-inf'
478
545
assert '{:E}' .format (float ('inf' )) == 'INF'
479
546
547
+ # Test g & G formatting
548
+ assert '{:g}' .format (123456.78901234567890 ) == '123457'
549
+ assert '{:.0g}' .format (123456.78901234567890 ) == '1e+05'
550
+ assert '{:.1g}' .format (123456.78901234567890 ) == '1e+05'
551
+ assert '{:.2g}' .format (123456.78901234567890 ) == '1.2e+05'
552
+ assert '{:g}' .format (1234567.8901234567890 ) == '1.23457e+06'
553
+ assert '{:.0g}' .format (1234567.8901234567890 ) == '1e+06'
554
+ assert '{:.1g}' .format (1234567.8901234567890 ) == '1e+06'
555
+ assert '{:.2g}' .format (1234567.8901234567890 ) == '1.2e+06'
556
+ assert '{:.3g}' .format (1234567.8901234567890 ) == '1.23e+06'
557
+ assert '{:.5g}' .format (1234567.8901234567890 ) == '1.2346e+06'
558
+ assert '{:.6g}' .format (1234567.8901234567890 ) == '1.23457e+06'
559
+ assert '{:.7g}' .format (1234567.8901234567890 ) == '1234568'
560
+ assert '{:.8g}' .format (1234567.8901234567890 ) == '1234567.9'
561
+ assert '{:G}' .format (123456.78901234567890 ) == '123457'
562
+ assert '{:.0G}' .format (123456.78901234567890 ) == '1E+05'
563
+ assert '{:.1G}' .format (123456.78901234567890 ) == '1E+05'
564
+ assert '{:.2G}' .format (123456.78901234567890 ) == '1.2E+05'
565
+ assert '{:G}' .format (1234567.8901234567890 ) == '1.23457E+06'
566
+ assert '{:.0G}' .format (1234567.8901234567890 ) == '1E+06'
567
+ assert '{:.1G}' .format (1234567.8901234567890 ) == '1E+06'
568
+ assert '{:.2G}' .format (1234567.8901234567890 ) == '1.2E+06'
569
+ assert '{:.3G}' .format (1234567.8901234567890 ) == '1.23E+06'
570
+ assert '{:.5G}' .format (1234567.8901234567890 ) == '1.2346E+06'
571
+ assert '{:.6G}' .format (1234567.8901234567890 ) == '1.23457E+06'
572
+ assert '{:.7G}' .format (1234567.8901234567890 ) == '1234568'
573
+ assert '{:.8G}' .format (1234567.8901234567890 ) == '1234567.9'
574
+ assert '{:g}' .format (0.12345678901234567890 ) == '0.123457'
575
+ assert '{:g}' .format (0.12345678901234567890e-1 ) == '0.0123457'
576
+ assert '{:g}' .format (0.12345678901234567890e-2 ) == '0.00123457'
577
+ assert '{:g}' .format (0.12345678901234567890e-3 ) == '0.000123457'
578
+ assert '{:g}' .format (0.12345678901234567890e-4 ) == '1.23457e-05'
579
+ assert '{:g}' .format (0.12345678901234567890e-5 ) == '1.23457e-06'
580
+ assert '{:.6g}' .format (0.12345678901234567890e-5 ) == '1.23457e-06'
581
+ assert '{:.10g}' .format (0.12345678901234567890e-5 ) == '1.23456789e-06'
582
+ assert '{:.20g}' .format (0.12345678901234567890e-5 ) == '1.2345678901234567384e-06'
583
+ assert '{:G}' .format (0.12345678901234567890 ) == '0.123457'
584
+ assert '{:G}' .format (0.12345678901234567890E-1 ) == '0.0123457'
585
+ assert '{:G}' .format (0.12345678901234567890E-2 ) == '0.00123457'
586
+ assert '{:G}' .format (0.12345678901234567890E-3 ) == '0.000123457'
587
+ assert '{:G}' .format (0.12345678901234567890E-4 ) == '1.23457E-05'
588
+ assert '{:G}' .format (0.12345678901234567890E-5 ) == '1.23457E-06'
589
+ assert '{:.6G}' .format (0.12345678901234567890E-5 ) == '1.23457E-06'
590
+ assert '{:.10G}' .format (0.12345678901234567890E-5 ) == '1.23456789E-06'
591
+ assert '{:.20G}' .format (0.12345678901234567890E-5 ) == '1.2345678901234567384E-06'
592
+ assert '{:g}' .format (float ('nan' )) == 'nan'
593
+ assert '{:g}' .format (float ('-nan' )) == 'nan'
594
+ assert '{:G}' .format (float ('nan' )) == 'NAN'
595
+ assert '{:g}' .format (float ('inf' )) == 'inf'
596
+ assert '{:g}' .format (float ('-inf' )) == '-inf'
597
+ assert '{:G}' .format (float ('inf' )) == 'INF'
598
+ assert '{:.0g}' .format (1.020e-13 ) == '1e-13'
599
+ assert '{:.0g}' .format (1.020e-13 ) == '1e-13'
600
+ assert '{:.1g}' .format (1.020e-13 ) == '1e-13'
601
+ assert '{:.2g}' .format (1.020e-13 ) == '1e-13'
602
+ assert '{:.3g}' .format (1.020e-13 ) == '1.02e-13'
603
+ assert '{:.4g}' .format (1.020e-13 ) == '1.02e-13'
604
+ assert '{:.5g}' .format (1.020e-13 ) == '1.02e-13'
605
+ assert '{:.6g}' .format (1.020e-13 ) == '1.02e-13'
606
+ assert '{:.7g}' .format (1.020e-13 ) == '1.02e-13'
607
+ assert '{:g}' .format (1.020e-13 ) == '1.02e-13'
608
+ assert "{:g}" .format (1.020e-4 ) == '0.000102'
480
609
481
610
# remove*fix test
482
611
def test_removeprefix ():
0 commit comments