+String_convert::precision_string (double x, int n)
+{
+ String format = "%." + to_string (max (0, n - 1)) + "e";
+ String str = double_string (abs (x), format.to_str0 ());
+
+ int exp = str.right_string (3).to_int ();
+ str = str.left_string (str.length () - 4);
+
+ while (str[str.length () - 1] == '0')
+ str = str.left_string (str.length () - 1);
+ if (str[str.length () - 1] == '.')
+ str = str.left_string (str.length () - 1);
+
+ if (exp == 0)
+ return (sign (x) > 0 ? str : "-" + str);
+
+ str = str.left_string (1) + str.cut_string (2, INT_MAX);
+ int dot = 1 + exp;
+ if (dot <= 0)
+ str = "0." + to_string ('0', -dot) + str;
+ else if (dot >= str.length ())
+ str += to_string ('0', dot - str.length ());
+ else if ((dot > 0) && (dot < str.length ()))
+ str = str.left_string (dot) + "." + str.cut_string (dot, INT_MAX);
+ else
+ assert (0);
+
+ return (sign (x) > 0 ? str : "-" + str);
+}
+
+Array<String>
+String_convert::split (String str, char c)