///|
// Fixed-point float formatting matching C's %f / %lf output
// (round half to even, used by printfn for printing constants)
///|
pub fn fmt_fixed(v : Double, prec : Int) -> String {
let neg = v < 0.0
let x = if neg { -v } else { v }
let mut scale : Int64 = 1
for i in 0.. 0.5 || (frac == 0.5 && ival % 2L == 1L) {
ival = ival + 1L
}
let int_part = ival / scale
let frac_part = ival % scale
let sb = StringBuilder::new()
if neg {
sb.write_char('-')
}
sb.write_string(int_part.to_string())
sb.write_char('.')
let frac_str = frac_part.to_string()
for i in frac_str.length()..