1 | module strconv |
2 | |
3 | /* |
4 | f32/f64 ftoa functions |
5 | |
6 | Copyright (c) 2019-2023 Dario Deledda. All rights reserved. |
7 | Use of this source code is governed by an MIT license |
8 | that can be found in the LICENSE file. |
9 | |
10 | This file contains the f32/f64 ftoa functions |
11 | |
12 | These functions are based on the work of: |
13 | Publication:PLDI 2018: Proceedings of the 39th ACM SIGPLAN |
14 | Conference on Programming Language Design and ImplementationJune 2018 |
15 | Pages 270–282 https://doi.org/10.1145/3192366.3192369 |
16 | |
17 | inspired by the Go version here: |
18 | https://github.com/cespare/ryu/tree/ba56a33f39e3bbbfa409095d0f9ae168a595feea |
19 | */ |
20 | |
21 | // ftoa_64 returns a string in scientific notation with max 17 digits after the dot. |
22 | // |
23 | // Example: assert strconv.ftoa_64(123.1234567891011121) == '1.2312345678910111e+02' |
24 | [inline] |
25 | pub fn ftoa_64(f f64) string { |
26 | return f64_to_str(f, 17) |
27 | } |
28 | |
29 | // ftoa_long_64 returns `f` as a `string` in decimal notation with a maximum of 17 digits after the dot. |
30 | // |
31 | // Example: assert strconv.f64_to_str_l(123.1234567891011121) == '123.12345678910111' |
32 | [inline] |
33 | pub fn ftoa_long_64(f f64) string { |
34 | return f64_to_str_l(f) |
35 | } |
36 | |
37 | // ftoa_32 returns a `string` in scientific notation with max 8 digits after the dot. |
38 | // |
39 | // Example: assert strconv.ftoa_32(34.1234567) == '3.4123455e+01' |
40 | [inline] |
41 | pub fn ftoa_32(f f32) string { |
42 | return f32_to_str(f, 8) |
43 | } |
44 | |
45 | // ftoa_long_32 returns `f` as a `string` in decimal notation with a maximum of 6 digits after the dot. |
46 | // |
47 | // Example: assert strconv.ftoa_long_32(34.1234567) == '34.12346' |
48 | [inline] |
49 | pub fn ftoa_long_32(f f32) string { |
50 | return f32_to_str_l(f) |
51 | } |