///|
// fmt's default float64 presentation uses shortest round-trip digits and
// scientific notation below exponent -4 or from exponent 6 onward.
fn diagnostic_number(n : Double) -> String {
let text = manifest_number(n)
if n.is_nan() || n.is_inf() || n == 0 {
return text
}
let negative = text.has_prefix("-")
let unsigned = if negative { text[1:].to_owned() } else { text }
let point = unsigned.find(".").unwrap_or(unsigned.length())
let digits = unsigned.replace_all(old=".", new="")
let mut first = 0
while digits.code_unit_at(first) == 48 {
first += 1
}
let exponent = point - first - 1
if exponent >= -4 && exponent < 6 {
return text
}
let mut end = digits.length()
while end > first + 1 && digits.code_unit_at(end - 1) == 48 {
end -= 1
}
let significand = digits[first:first + 1].to_owned() +
(if end > first + 1 { "." + digits[first + 1:end].to_owned() } else { "" })
let magnitude = exponent.abs().to_string()
(if negative { "-" } else { "" }) +
significand +
"e" +
(if exponent < 0 { "-" } else { "+" }) +
(if magnitude.length() < 2 { "0" } else { "" }) +
magnitude
}