1:计算double值四舍五入的方法
对小数数值进行四舍五入,首先应该确认保留小数位, 如果数值的小数精度大于保留小数位,那么开始四舍五入计算.四舍五入的方法非常简单,在所有要丢失精度的小数位中加5,如果大于10则向前进位,最后计算出四舍五入的结果.
/// <summary>计算double值四舍五入的方法 /// /// </summary> /// <param name="dbl">进行四舍五入的数值</param> /// <param name="i">保留的小数位</param> /// <returns>返回四舍五入后的double值</returns> internal double Round(double dbl, int i) { string P_str_dbl = dbl.ToString();//将double数值转换为字符串 string P_str_lower = //将double数值小数位转换为字符串 P_str_dbl.Split('.')[1]; int P_str_length = P_str_lower.Length;//计算double数值小数位长度 dbl += GetValue(i, P_str_length);//开始进行四舍五入运算 P_str_dbl = dbl.ToString();//将运算后的值转换为字符串 if (P_str_dbl.Contains("."))//判断是否存在小数位 { string P_str_upper = //得到整数位字符串 P_str_dbl.Split('.')[0]; P_str_lower = P_str_dbl.Split('.')[1];//得到小数位字符串 if (P_str_lower.Length > i)//判断数值位数是否大于保留小数位数 { P_str_lower = P_str_lower.Substring(//截取保留的小数位 0, i); return double.Parse(//返回double数值 P_str_upper + "." + P_str_lower); } else { return double.Parse(P_str_dbl);//如数值位数小于保留小数位数则直接返回 } } else { return double.Parse(P_str_dbl);//如果没有小数位则直接返回值 } } /// <summary>得到小数数值的方法 /// /// </summary> /// <param name="int_null">四舍五入保留的位数</param> /// <param name="length">四舍五入丢失的位数</param> /// <returns>返回小数值用于四舍五入计算</returns> internal double GetValue(int int_null, int length) { string P_str_dbl = "0.";//定义字符串变量并赋值 for (int i = 0; i < length; i++)//使用for循环添加小数位 { if (i > int_null - 1) { P_str_dbl += "5";//向小数的四舍五入部分加5 } else { P_str_dbl += "0";//向小数的保留部分加0 } } return double.Parse(P_str_dbl);//返回小数数值 }
2:数字金额的小写转大写
小写金额需先做判断是否是int类型
/// <summary>数字金额的小写转大写 /// /// </summary> /// <param name="x">小写金额</param> /// <returns>大写金额</returns> public string NumToChinese(string x) { //数字转换为中文后的数组 string[] P_array_num = new string[] { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" }; //为数字位数建立一个位数组 string[] P_array_digit = new string[] { "", "拾", "佰", "仟" }; //为数字单位建立一个单位数组 string[] P_array_units = new string[] { "", "万", "亿", "万亿" }; string P_str_returnValue = ""; //返回值 int finger = 0; //字符位置指针 int P_int_m = x.Length % 4; //取模 int P_int_k = 0; if (P_int_m > 0) P_int_k = x.Length / 4 + 1; else P_int_k = x.Length / 4; //外层循环,四位一组,每组最后加上单位: ",万亿,",",亿,",",万," for (int i = P_int_k; i > 0; i--) { int P_int_L = 4; if (i == P_int_k && P_int_m != 0) P_int_L = P_int_m; //得到一组四位数 string four = x.Substring(finger, P_int_L); int P_int_l = four.Length; //内层循环在该组中的每一位数上循环 for (int j = 0; j < P_int_l; j++) { //处理组中的每一位数加上所在的位 int n = Convert.ToInt32(four.Substring(j, 1)); if (n == 0) { if (j < P_int_l - 1 && Convert.ToInt32(four.Substring(j + 1, 1)) > 0 && !P_str_returnValue.EndsWith(P_array_num[n])) P_str_returnValue += P_array_num[n]; } else { if (!(n == 1 && (P_str_returnValue.EndsWith(P_array_num[0]) | P_str_returnValue.Length == 0) && j == P_int_l - 2)) P_str_returnValue += P_array_num[n]; P_str_returnValue += P_array_digit[P_int_l - j - 1]; } } finger += P_int_L; //每组最后加上一个单位:",万,",",亿," 等 if (i < P_int_k) //如果不是最高位的一组 { if (Convert.ToInt32(four) != 0) //如果所有4位不全是0则加上单位",万,",",亿,"等 P_str_returnValue += P_array_units[i - 1]; } else { //处理最高位的一组,最后必须加上单位 P_str_returnValue += P_array_units[i - 1]; } } return P_str_returnValue; }
3:设置货币的小数位数
double P_dbl_value;//定义double类型变量 if (double.TryParse(txt_input.Text, out P_dbl_value))//判断输入是否正确 { NumberFormatInfo GN = //实例化NumberFormatInfo对象 new CultureInfo("zh-CN", false).NumberFormat; GN.CurrencyDecimalDigits = Convert.ToInt32(cbox_select.Text);//设置保留位数 txt_output.Text = P_dbl_value.ToString("C", GN);//将输入的小数转换为货币形式 }
else { MessageBox.Show("请输入正确的数值!", "提示!");//用户提示信息 }
4:进制转换
class Transform { internal string TenToBinary(long value)//将十进制转换为二进制 { return Convert.ToString(value, 2); } internal string TenToEight(long value)//将十进制转换为八进制 { return Convert.ToString(value, 8); } internal string TenToSixteen(long value)//将十进制转换为十六进制 { return Convert.ToString(value, 16); } internal string BinaryToEight(long value)//将二进制转换为八进制 { return Convert.ToString( Convert.ToInt64(value.ToString(), 2), 8); } internal string BinaryToTen(long value)//将二进制转换为十进制 { return Convert.ToInt64( value.ToString(), 2).ToString(); } internal string BinaryToSixteen(long value)//将二进制转换为十六进制 { return Convert.ToString( Convert.ToInt64(value.ToString(), 2), 16); } internal string EightToBinary(long value)//将八进制转换为二进制 { return Convert.ToString( Convert.ToInt64(value.ToString(), 8), 2); } internal string EightToTen(long value)//将八进制转换为十进制 { return Convert.ToInt64( value.ToString(), 8).ToString(); } internal string EightToSixteen(long value)//将八进制转换为十六进制 { return Convert.ToString( Convert.ToInt64(value.ToString(), 8), 16); } internal string SixteenToBinary(string value)//将十六进制转换为二进制 { return Convert.ToString( Convert.ToInt64(value, 16), 2); } internal string SixteenToEight(string value)//将十六进制转换为八进制 { return Convert.ToString( Convert.ToInt64(value, 16), 8); } internal string SixteenToTen(string value)//将十六进制转换为十进制 { return Convert.ToUInt64(value, 16).ToString(); } }