cuqueclicker_lib/
format.rs1const SUFFIXES: &[&str] = &[
2 "", "k", "M", "B", "T", "Qa", "Qi", "Sx", "Sp", "Oc", "No", "Dc",
3];
4
5pub fn big(n: f64) -> String {
6 if n.is_nan() || n.is_infinite() {
7 return "?".into();
8 }
9 if n < 1000.0 {
10 return format!("{}", n.floor() as u64);
11 }
12 let mag = (n.log10() / 3.0).floor() as i32;
13 let idx = mag.clamp(0, (SUFFIXES.len() - 1) as i32) as usize;
14 let scaled = n / 10f64.powi((idx * 3) as i32);
15 format!("{:.2}{}", scaled, SUFFIXES[idx])
16}
17
18pub fn rate(n: f64) -> String {
19 if n < 10.0 {
20 format!("{:.2}", n)
21 } else if n < 100.0 {
22 format!("{:.1}", n)
23 } else {
24 big(n)
25 }
26}
27
28pub fn duration(secs: u64) -> String {
29 let h = secs / 3600;
30 let m = (secs % 3600) / 60;
31 let s = secs % 60;
32 if h > 0 {
33 format!("{}h {:02}m {:02}s", h, m, s)
34 } else if m > 0 {
35 format!("{}m {:02}s", m, s)
36 } else {
37 format!("{}s", s)
38 }
39}