人民币大小写转换vb代码,人民币小写转大写c语言

/// 转换为人民币大写pub fn to_upper_money(amount: f64) -> String { // 定义小数点前的大写单位 let prefix_units = vec![ "万", "仟", "佰", "拾", "亿", "仟", "佰", "拾", "万", "仟", "佰", "拾", "元", ]; // 定义小数点后面的大写单位 let suffix_units = vec!["角", "分"]; // 定义所有的大小 let mut map = HashMap::new(); map.insert("0".to_owned(), "零"); map.insert("1".to_owned(), "壹"); map.insert("2".to_owned(), "贰"); map.insert("3".to_owned(), "叁"); map.insert("4".to_owned(), "肆"); map.insert("5".to_owned(), "伍"); map.insert("6".to_owned(), "陆"); map.insert("7".to_owned(), "柒"); map.insert("8".to_owned(), "捌"); map.insert("9".to_owned(), "玖"); // 将输入的数值转换为二位小数字符串 let amount_str = format!("{:.2}", amount); // 将字符串拆分为字符数组 let chs = amount_str .chars() .collect::<Vec<_>>() .iter() .map(|x| x.to_string()) .collect::<Vec<_>>(); // 提取小数前面的数字 let prefix_chars = &chs[0..chs.len() - 3]; // 提取小数后面的数字 let suffix_chars = &chs[chs.len() - 2..]; // println!("{:?} == {:?}", prefix_chars, suffix_chars); let mut res = Vec::new(); let mut series_zero = 0; // 不为0元时处理 if prefix_chars != vec!["0"] { // 处理最后面的0 let mut suffix_zeros = 0; for y in 1..prefix_chars.len() { if prefix_chars[prefix_chars.len() - y] == "0" { suffix_zeros += 1; } else { break; } } // 获取需要处理的位数 let l = prefix_chars.len() - suffix_zeros; // 循环处理 for r in 0..l { let x = &prefix_chars[r]; let unit_index = prefix_units.len() - (prefix_chars.len() - r); // println!("{} -- {}", x, unit_index); if x != "0" { res.push(map.get(x).unwrap().to_string()); res.push(prefix_units[unit_index].to_string()); series_zero = 0; } else { if r == prefix_chars.len() - 1 { // println!("---- {}", prefix_units[unit_index].to_string()); res.push(prefix_units[unit_index].to_string()); } else { if series_zero == 0 { // println!("=-=-{}", prefix_chars.len() - r); let idx = prefix_chars.len() - r; if idx < 4 { res.push(map.get(x).unwrap().to_string()); } else if idx >= 4 && idx < 9 { res.push("万零".to_owned()); } else if idx >= 9 { res.push("亿零".to_owned()); } else { res.push("零".to_owned()); } } series_zero += 1; } } } if suffix_zeros > 8 && suffix_zeros < 13 { res.push("亿元".to_owned()); } else if suffix_zeros > 4 && suffix_zeros < 8 { res.push("万元".to_owned()); } else if suffix_zeros > 0 { res.push("元".to_owned()); } } // 角分处理 if suffix_chars == vec!["0", "0"] { res.push("整".to_owned()); } else { let mut r = 0; for x in suffix_chars.iter() { let unit_index = suffix_units.len() - (suffix_chars.len() - r); if x != "0" { res.push(map.get(x).unwrap().to_string()); res.push(suffix_units[unit_index].to_string()); } else { // 不为0元才需加上零 if r == 0 && res.len() > 0 { res.push("零".to_owned()); } } r += 1; } } res.join("")}

原创文章,作者:芒小种,如若转载,请注明出处:http://www.fhgg.net/shenghuobaike/48035.html

本文来自投稿,不代表【食趣网】立场,如若转载,请注明出处:http://www.fhgg.net/

(0)
上一篇 2023年3月29日 下午1:31
下一篇 2023年3月29日 下午1:32

相关推荐

发表回复

登录后才能评论