I've just published another refinement, also submitted by Mr. Hamayama, to the reference implementation of SRFI 48.  (Thanks yet again!)

Here's his description:

  I found that the behavior of format ~F is
  determined by the implementation of
  'number->string'.

  If (number->string (exact->inexact 0.0003))
  returns "0.0003", (format "~1,2F" 0.0003)
  returns "0.00".

  If (number->string (exact->inexact 0.0003))
  returns "3.0e-4", (format "~1,2F" 0.0003)
  returns "3.00e-4".

  I think this behavior should be customizable but
  it seems difficult.

  So, I defined three procedures near the top of
  code and added a comment that explains them.

  If system provides a kind of 'number->string'
  that can select whether output is fixed-point
  notation or exponential notation, user can use
  it by overwriting these procedures.

  Also, I refactored some code and confirmed all
  tests are passed in the following environment.

  OS: Windows 8.1 (64bit) DevTool: MSYS2/MinGW-w64
  (64bit) (gcc version 7.1.0 (Rev2, Built by MSYS2
  project)) Scheme: Gauche v0.9.6_pre4,
  Sagittarius v0.8.4, Racket v6.7


SRFI Editor