pub fn fmt_num_i32_str(number: i32) -> String {
let mut formatted_number = String::new();
let mut count = 0;
let number_convert = number.to_string();
for c in number_convert.chars().rev() {
if count == 3 {
formatted_number.push(',');
count = 0;
}
formatted_number.push(c);
count += 1;
}
formatted_number.chars().rev().collect()
}
pub fn fmt_num_i64_str(number: i64) -> String {
let mut formatted_number = String::new();
let mut count = 0;
let number_convert = number.to_string();
for c in number_convert.chars().rev() {
if count == 3 {
formatted_number.push(',');
count = 0;
}
formatted_number.push(c);
count += 1;
}
formatted_number.chars().rev().collect()
}
pub fn fmt_num_f64_str(number: f64) -> String {
let mut formatted_number = String::new();
let mut count = 0;
let number_convert = number.to_string();
let mut number_point_raw = number_convert.split('.');
let integer_part = number_point_raw.next().unwrap();
let decimal_part = number_point_raw.next().unwrap_or("00");
for c in integer_part.chars().rev() {
if count == 3 {
formatted_number.push(',');
count = 0;
}
formatted_number.push(c);
count += 1;
}
formatted_number = formatted_number.chars().rev().collect();
formatted_number.push('.');
formatted_number.push_str(decimal_part);
formatted_number
}
pub fn fmt_num_isize_str(number: isize) -> String {
let mut formatted_number = String::new();
let mut count = 0;
let number_convert = number.to_string();
for c in number_convert.chars().rev() {
if count == 3 {
formatted_number.push(',');
count = 0;
}
formatted_number.push(c);
count += 1;
}
formatted_number.chars().rev().collect()
}
pub fn fmt_num_str(number: &str) -> String {
let mut formatted_number = String::new();
let mut count = 0;
for c in number.chars().rev() {
if count == 3 {
formatted_number.push(',');
count = 0;
}
formatted_number.push(c);
count += 1;
}
formatted_number.chars().rev().collect()
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn i32_string() {
assert_eq!(fmt_num_i32_str(12345), "12,345");
}
#[test]
fn i64_string() {
assert_eq!(fmt_num_i64_str(12345), "12,345");
let int = 123456778;
let a = fmt_num_i64_str(int);
println!("{}", a);
}
#[test]
fn f64_string() {
assert_eq!(fmt_num_f64_str(12345.00), "12,345.00");
let test_f64 = 23.23;
println!("{}", test_f64);
assert_eq!(fmt_num_f64_str(23.23), "23.23");
assert_eq!(fmt_num_f64_str(1234567.89), "1,234,567.89");
assert_eq!(fmt_num_f64_str(1234567890.0), "1,234,567,890.00");
assert_eq!(fmt_num_f64_str(1000.0), "1,000.00");
}
#[test]
fn isize_string() {
assert_eq!(fmt_num_isize_str(12345), "12,345");
}
#[test]
fn str_string() {
assert_eq!(fmt_num_str("12345"), "12,345");
}
}