v / vlib / strconv
Raw file | 51 loc (42 sloc) | 1.52 KB | Latest commit hash 1c48a8d76
1module strconv
2
3/*
4f32/f64 ftoa functions
5
6Copyright (c) 2019-2023 Dario Deledda. All rights reserved.
7Use of this source code is governed by an MIT license
8that can be found in the LICENSE file.
9
10This file contains the f32/f64 ftoa functions
11
12These functions are based on the work of:
13Publication:PLDI 2018: Proceedings of the 39th ACM SIGPLAN
14Conference on Programming Language Design and ImplementationJune 2018
15Pages 270–282 https://doi.org/10.1145/3192366.3192369
16
17inspired by the Go version here:
18https://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]
25pub 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]
33pub 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]
41pub 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]
49pub fn ftoa_long_32(f f32) string {
50 return f32_to_str_l(f)
51}