diff options
author | Silvan Mosberger <contact@infinisil.com> | 2020-03-07 02:44:56 +0100 |
---|---|---|
committer | Silvan Mosberger <contact@infinisil.com> | 2020-07-25 21:43:09 +0200 |
commit | 5ae3fb2c3804a74251c359d603e00bd947aaea15 (patch) | |
tree | 316b5386d4b649d0d6558de5b742f3054479d44a /lib/strings.nix | |
parent | f1bc04254b98c0e2b9c1f232a2be9b5a41f71efb (diff) |
lib/strings: Add floatToString
Diffstat (limited to 'lib/strings.nix')
-rw-r--r-- | lib/strings.nix | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/strings.nix b/lib/strings.nix index 74e3eaa0722d..0baa942355c0 100644 --- a/lib/strings.nix +++ b/lib/strings.nix @@ -612,6 +612,22 @@ rec { */ fixedWidthNumber = width: n: fixedWidthString width "0" (toString n); + /* Convert a float to a string, but emit a warning when precision is lost + during the conversion + + Example: + floatToString 0.000001 + => "0.000001" + floatToString 0.0000001 + => trace: warning: Imprecise conversion from float to string 0.000000 + "0.000000" + */ + floatToString = float: let + result = toString float; + precise = float == builtins.fromJSON result; + in if precise then result + else lib.warn "Imprecise conversion from float to string ${result}" result; + /* Check whether a value can be coerced to a string */ isCoercibleToString = x: builtins.elem (builtins.typeOf x) [ "path" "string" "null" "int" "float" "bool" ] || |