From 066dbc2f0c705f963617f45c2e0b352ccf652c9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Tue, 17 Aug 2021 11:43:11 +0200 Subject: String: Fix default decimals truncation in num and num_real Fixes undefined behavior, and fixes the logic for negative powers of ten. Fixes #51764. Adds tests to validate the changes and prevent regressions. Adds docs for `String.num`. --- doc/classes/String.xml | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'doc/classes/String.xml') diff --git a/doc/classes/String.xml b/doc/classes/String.xml index 0376a3f96e..467e2f901f 100644 --- a/doc/classes/String.xml +++ b/doc/classes/String.xml @@ -410,6 +410,21 @@ + Converts a [float] to a string representation of a decimal number. + The number of decimal places can be specified with [code]decimals[/code]. If [code]decimals[/code] is [code]-1[/code] (default), decimal places will be automatically adjusted so that the string representation has 14 significant digits (counting both digits to the left and the right of the decimal point). + Trailing zeros are not included in the string. The last digit will be rounded and not truncated. + Some examples: + [codeblock] + String.num(3.141593) # "3.141593" + String.num(3.141593, 3) # "3.142" + String.num(3.14159300) # "3.141593", no trailing zeros. + # Last digit will be rounded up here, which reduces total digit count since + # trailing zeros are removed: + String.num(42.129999, 5) # "42.13" + # If `decimals` is not specified, the total amount of significant digits is 14: + String.num(-0.0000012345432123454321) # "-0.00000123454321" + String.num(-10000.0000012345432123454321) # "-10000.0000012345" + [/codeblock] -- cgit v1.2.3