• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
遥远的梦
--心有多大, 世界就有多大
博客园    首页    新随笔    联系   管理    订阅  订阅
常用数字处理小技巧

说明: 平时编程中总会遇到数字处理问题, 这里将自己平时总结的一些数字处理小技巧结合MSDN上相关的介绍, 列举一些常用的数字处理技术.

 原理非常简单, 不再细说, 只图自己和大家引用或参考时方便.

1.对计算结果四舍五入(d:数,i小数位数)

 效果: 233.8763

 -->  233.88

计算结果四舍五入CODE
//d: 表示四舍五入的数字; i: 保留的小数位数
public static double Round(double d, int i)
{
if (d >= 0)
{
d
+= 5 * Math.Pow(10, -(i + 1));
}
else
{
d
+= -5 * Math.Pow(10, -(i + 1));
}
string str = d.ToString();
string[] strs = str.Split('.');
int idot = str.IndexOf('.');
string prestr = strs[0];
string poststr = strs[1];
if (poststr.Length > i)
{
poststr
= str.Substring(idot + 1, i);//截取需要位数
}
if (poststr.Length <= 2)
{
poststr
= poststr + "0";
}
string strd = prestr + "." + poststr;
d
= Double.Parse(strd);//将字符串转换为双精度实数
return d;
}


2.将商品金额小写转换成大写

 效果: 1234566789

    -->壹拾贰亿叁仟肆佰伍拾陆万陆仟柒佰捌拾玖元

将金额小写转化为大写CODE
private void Convert_Click(object sender, EventArgs e)
{
String[] Scale
= { "分", "角", "元", "拾", "佰", "仟", "万", "拾", "佰", "仟", "亿", "拾", "佰", "仟", "兆", "拾", "佰", "仟" };
String[] Base
= { "零", "壹", "贰", "叁", "肆", "伍", "陆", "柒", "捌", "玖" };
String Temp
= textBox1.Text.ToString();
String Info
= null;
int index = Temp.IndexOf(".", 0, Temp.Length);//判断是否有小数点
if (index != -1)
{
Temp
= Temp.Remove(Temp.IndexOf("."), 1);
for (int i = Temp.Length; i > 0; i--)
{
int Data = Convert.ToInt16(Temp[Temp.Length - i]);
Info
+= Base[Data - 48];
Info
+= Scale[i - 1];
}
}
else
{
for (int i = Temp.Length; i > 0; i--)
{

int Data = Convert.ToInt16(Temp[Temp.Length - i]);
Info
+= Base[Data - 48];
Info
+= Scale[i + 1];
}

}

textBox2.Text
= Info;
}


3.设置货币值中使用的小数位数

 

设置货币值中使用的小数Code
System.Globalization.NumberFormatInfo GN = new System.Globalization.CultureInfo("zh-CN", false).NumberFormat;
Int64 myInt
= 12345;
private void SetLL_Click(object sender, EventArgs e)
{
GN.CurrencyDecimalDigits
= 4;
MessageBox.Show(myInt.ToString(
"C", GN), "保留四位小数");
}


4.自定义货币值中的小数点

Code
System.Globalization.NumberFormatInfo GN = new System.Globalization.CultureInfo("zh-CN", false).NumberFormat;
Int64 myInt
= 123456789;
private void button1_Click(object sender, EventArgs e)
{
GN.CurrencyDecimalSeparator
= "$";
MessageBox.Show(
"定义前:" + myInt.ToString("C") + "\n" + "定义后:" + myInt.ToString("C", GN), "自定义小数点为$符");
}


5.自定义货币值中小数点左边每一组的位数 

Code
System.Globalization.NumberFormatInfo CN = new System.Globalization.CultureInfo("en-US", false).NumberFormat;
Int64 myInt
= 123456789012345;
int[] mySizes1 = { 2, 3, 1 };
int[] mySizes2 = { 2, 3, 2 };
CN.CurrencyGroupSizes
= mySizes1;
MessageBox.Show(
"定义前:" + myInt.ToString("C") + "\n" + "定义后:" + myInt.ToString("C", CN), "{ 2, 3, 1 }格式");
CN.CurrencyGroupSizes
= mySizes2;
MessageBox.Show(
"定义前:" + myInt.ToString("C") + "\n" + "定义后:" + myInt.ToString("C", CN), "{ 2, 3, 2 }格式");


6.自定义货币值中小数点左边数字分组字符

Code
System.Globalization.NumberFormatInfo GN = new System.Globalization.CultureInfo("en-US", false).NumberFormat;
Int64 myInt
= 123456789;
GN.CurrencyGroupSeparator
= "、";
MessageBox.Show(
"定义前: " + myInt.ToString("C") + "\n" + "定义后: " + myInt.ToString("C", GN), "分组字符用、号");


7.自定义百分比符号

效果: 默认符号: 10,257,865.84%
自定义符号&: 10,257,865.84&
自定义符号*: 10,257,865.84*
自定义符号#: 10,257,865.84#

Code
System.Globalization.NumberFormatInfo GN = new System.Globalization.CultureInfo("zh-CN", false).NumberFormat;
double intPrecnt = 102578.6584;
string strPrecnt = null;
GN.PercentSymbol
= "%";
strPrecnt
+= "默认符号: " + intPrecnt.ToString("p", GN);
GN.PercentSymbol
= "&";
strPrecnt
+= "\n自定义符号&: " + intPrecnt.ToString("p", GN);
GN.PercentSymbol
= "*";
strPrecnt
+= "\n自定义符号*: " + intPrecnt.ToString("p", GN);
GN.PercentSymbol
= "#";
strPrecnt
+= "\n自定义符号#: " + intPrecnt.ToString("p", GN);
MessageBox.Show(strPrecnt,
"设置效果", MessageBoxButtons.OK, MessageBoxIcon.Information);


8.自定义数字小数点右边的保留位数

效果: 原始数字: 4458524.2568412547

默认小数位数:4,458,524.26
保留三位小数:4,458,524.257
保留五位小数:4,458,524.25684
保留五位小数:4,458,524.2568413

Code
System.Globalization.NumberFormatInfo GN = new System.Globalization.CultureInfo("zh-CN", false).NumberFormat;
double intNumber = 4458524.2568412547;
string strNumber = "";
strNumber
+= "默认小数位数:" + intNumber.ToString("N");
GN.NumberDecimalDigits
= 3;
strNumber
+= "\n保留三位小数:" + intNumber.ToString("N", GN);
GN.NumberDecimalDigits
= 5;
strNumber
+= "\n保留五位小数:" + intNumber.ToString("N", GN);
GN.NumberDecimalDigits
= 7;
strNumber
+= "\n保留五位小数:" + intNumber.ToString("N", GN);
MessageBox.Show(strNumber,
"设置效果", MessageBoxButtons.OK, MessageBoxIcon.Information);


9.自定义数字小数点左边分组位数(从小数点开始向左)

 效果: 默认格式:711,413,414,517.12

{ 1, 3, 4 }格式:7114,1341,451,7.12
{ 2, 3, 0 }格式:7114134,145,17.12
{ 2, 6, 2 }格式:71,14,134145,17.12

Code
System.Globalization.NumberFormatInfo GN = new System.Globalization.CultureInfo("zh-CN", false).NumberFormat;
double intNumber = 711413414517.12;
string strNumber = null;
strNumber
+= "默认格式:" + intNumber.ToString("N", GN);
int[] MySizes1 = { 1, 3, 4 };
GN.NumberGroupSizes
= MySizes1;
strNumber
+= "\n{ 1, 3, 4 }格式:" + intNumber.ToString("N", GN);
int[] MySizes2 = { 2, 3, 0 };
GN.NumberGroupSizes
= MySizes2;
strNumber
+= "\n{ 2, 3, 0 }格式:" + intNumber.ToString("N", GN);
int[] MySizes3 = { 2, 6, 2 };
GN.NumberGroupSizes
= MySizes3;
strNumber
+= "\n{ 2, 6, 2 }格式:" + intNumber.ToString("N", GN);
MessageBox.Show(strNumber,
"设置效果", MessageBoxButtons.OK, MessageBoxIcon.Information);


10.格式化输入数据为货币格式

效果: 输入: 12345

        输出: ¥12 345.00

Code
try
{
System.Globalization.NumberFormatInfo nfi
= new System.Globalization.CultureInfo("zh-CN", false).NumberFormat;
nfi.CurrencyGroupSeparator
= " ";
textBox2.Text
= Convert.ToDouble(textBox1.Text).ToString("c", nfi);
}
catch (Exception ee)
{
MessageBox.Show(ee.Message);
}
posted on 2008-09-16 18:17  子逸  阅读(1932)  评论(2)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3