(转贴)c#四舍五入运算代码
2006-09-07 16:04
344 查看
M$总晃惦人,C#里Math.Round()似乎在做舍入计算的时候没那么好用,简直可以说是“五舍六入”啦~~~刚开始不知道这茬,计算结果总不对。后来,跟了程序才发现这方法居然忽悠了我。没法子,既然这么不好用,或者说这么没有中国特色,只能自己搞点中国特色出来了。重写Round():
![](http://yul.cnblogs.com/Images/OutliningIndicators/None.gif)
public static double Round(double d, int i)
![](http://yul.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://yul.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
![](http://yul.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if(d >=0)
![](http://yul.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://yul.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
![](http://yul.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
d += 5 * Math.Pow(10, -(i + 1));
![](http://yul.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://yul.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
else
![](http://yul.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://yul.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
![](http://yul.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
d += -5 * Math.Pow(10, -(i + 1));
![](http://yul.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://yul.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
string str = d.ToString();
![](http://yul.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
string[] strs = str.Split('.');
![](http://yul.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int idot = str.IndexOf('.');
![](http://yul.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
string prestr = strs[0];
![](http://yul.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
string poststr = strs[1];
![](http://yul.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if(poststr.Length > i)
![](http://yul.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://yul.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
![](http://yul.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
poststr = str.Substring(idot + 1, i);
![](http://yul.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://yul.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
string strd = prestr + "." + poststr;
![](http://yul.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
d = Double.Parse(strd);
![](http://yul.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return d;
![](http://yul.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
}
参数:d表示要四舍五入的数;i表示要保留的小数点后为数。
![](http://yul.cnblogs.com/Images/OutliningIndicators/None.gif)
public static double Round(double d, int i)
![](http://yul.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](http://yul.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
![](http://yul.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if(d >=0)
![](http://yul.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://yul.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
![](http://yul.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
d += 5 * Math.Pow(10, -(i + 1));
![](http://yul.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://yul.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
else
![](http://yul.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://yul.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
![](http://yul.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
d += -5 * Math.Pow(10, -(i + 1));
![](http://yul.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://yul.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
string str = d.ToString();
![](http://yul.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
string[] strs = str.Split('.');
![](http://yul.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
int idot = str.IndexOf('.');
![](http://yul.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
string prestr = strs[0];
![](http://yul.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
string poststr = strs[1];
![](http://yul.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
if(poststr.Length > i)
![](http://yul.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](http://yul.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
![](http://www.cnblogs.com/Images/dot.gif)
{
![](http://yul.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
poststr = str.Substring(idot + 1, i);
![](http://yul.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
}
![](http://yul.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
string strd = prestr + "." + poststr;
![](http://yul.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
d = Double.Parse(strd);
![](http://yul.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return d;
![](http://yul.cnblogs.com/Images/OutliningIndicators/ExpandedBlockEnd.gif)
}
参数:d表示要四舍五入的数;i表示要保留的小数点后为数。
相关文章推荐
- c#四舍五入运算代码
- C# TreeView 控件选中父节点后子节点自动全选的代码 [转贴] [测试有效]
- c# 一行代码实现C#的四舍五入 不错推荐
- 矩阵运算的C#代码实现
- 转贴:C#动态执行字符串(动态创建代码)
- C# 写的 CPU 浮点运算测试工具.并且还有获取CPU种种数据的方法(图)(代码)
- 一行代码实现C#的四舍五入
- 计算器C#代码(实现整数的四则运算)
- C#实现大数字运算的实例代码
- C#中的除法和四舍五入运算
- c#测试本机sql运算速度的代码示例分享
- 用C#代码编写的SN快速输入工具[转贴]
- 转贴(天极论坛):代码换肤术——C#和VB
- c#中的浮点型转整形的舍取 四舍五入和银行家舍入实现代码
- C#把XML转换成JSON的代码[转贴]
- C#中实现四舍五入的参考代码
- C#中的除法和四舍五入运算
- C#代码
- 【提供全部源码下载】C# ASP.NET 全国最好用的通用数据库访问层代码之一
- c#中JavaScript与后台代码的相互调