[ [ [ >float ] dip ] when ] keep
] if ;
-: ?fix-nonsignificant-zero ( string digits -- string )
- [ ".0" "" replace ] [ drop ] if-zero ;
-
: format-scientific ( x digits -- string )
format-fast-scientific? [
[ "e" format-float-fast ]
- [ ?fix-nonsignificant-zero ] bi
+ [ [ ".0e" "e" replace ] [ drop ] if-zero ] bi
] [ format-scientific-simple ] if ;
: format-fast-decimal? ( x digits -- x' digits ? )
: format-decimal ( x digits -- string )
format-fast-decimal? [
[ "f" format-float-fast ]
- [ ?fix-nonsignificant-zero ] bi
+ [ [ ".0" ?tail drop ] [ drop ] if-zero ] bi
] [ format-decimal-simple ] if ;
ERROR: unknown-printf-directive ;