一:可选择保留位数,注释很解释的很详细,上图

二:全部代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms; namespace Round
{
public partial class Frm_Main : Form
{
public Frm_Main()
{
InitializeComponent();
} private void btn_Get_Click(object sender, EventArgs e)
{
double P_dbl_d1, P_dbl_d2;//定义两个double类型变量
if (double.TryParse(txt_add1.Text, out P_dbl_d1) &&//判断输入信息是否正确
double.TryParse(txt_add2.Text, out P_dbl_d2))
{
txt_add3.Text = //得到四舍五入后的值
Round(P_dbl_d1 + P_dbl_d2, cbox_select.SelectedIndex + ).ToString();
}
else
{
MessageBox.Show(//提示错误信息
"输入数值不正确!", "提示!");
}
} /// <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('.')[];//----------得到'.'之后的字符,(这个用法网上几乎没有相关材料) 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('.')[];//----------得到'.'之前的字符
P_str_lower = P_str_dbl.Split('.')[];//得到小数位字符串
if (P_str_lower.Length > i)//判断数值位数是否大于保留小数位数
{
P_str_lower = P_str_lower.Substring(//截取保留的小数位
, 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>
/// 返回一个需要保留的位数的下一位为5的小数,如4位小数,即0.0005
/// </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 = ; i < length; i++)//使用for循环添加小数位
{
if (i > int_null - )
{
P_str_dbl += "";//向小数的四舍五入部分加5
}
else
{
P_str_dbl += "";//向小数的保留部分加0
}
}
return double.Parse(P_str_dbl);//返回小数数值
} private void Frm_Main_Load(object sender, EventArgs e)
{
cbox_select.SelectedIndex = ;//cbox_select控件默认选择第一项
}
}
}

一个简单的在int范围内的保留小数点后n位数的四舍五入方法

/// <summary>
/// 实现数据的四舍五入法  
/// </summary>
/// <param name="v">要进行处理的数据</param>
/// <param name="x">保留的小数位数</param>
/// <returns>四舍五入后的结果</returns>
public static double Round(double v, int x)
{
bool isNegative = false;
//如果是负数
if (v < )
{
isNegative = true;
v = -v;
}
int IValue = ;
for (int i = ; i <= x; i++)
{
IValue = IValue * ;
}
int Int = (int)(v * IValue + 0.5); v =Convert.ToDouble(Int) /Convert.ToDouble(IValue);
if (isNegative)
{
v = -v;
}
return v;
}

保留n位四舍五入小数的更多相关文章

  1. 【转载】C#中decimal保留2位有效小数

    在C#的数字运算过程中,有时候针对十进制decimal类型的计算需要保留2位有效小数,针对decimal变量保留2位有效小数有多种方法,可以使用Math.Round方法以及ToString先转换为字符 ...

  2. C# 保留2位小数

    1.只要求保留N位不四舍5入 float   f   =   0.55555f;                 int   i   =(int)(f   *   100);             ...

  3. asp.net保留两位小数

    1.System.Globalization.NumberFormatInfo provider = new System.Globalization.NumberFormatInfo();provi ...

  4. C# 保留N位小数

    1.只要求保留N位不四舍五入 float   f   =   0.55555f;    int   i   =(int)(f   *   100);    f   =   (float)(i*1.0) ...

  5. sql 保留两位小数+四舍五入

    1. ROUND(该函数,只是负责四舍五入到两位小数,但是不负责截断 只留两位小数,例如下例:) 关于ROUND函数,我们平常理解为4舍5入,如: print ROUND(13.145, 2); 结果 ...

  6. Double 数据保留两位小数二:直接截取小数后面两位,不进行四舍五入

    package com; public class T2 { public static void main(String[] args) { System.out.println(calculate ...

  7. (转)JS保留两位小数 四舍五入函数

    本文转载自:http://www.cnblogs.com/446557021/archive/2011/10/13/2211047.html js 四舍五入函数 toFixed(),里面的参数 就是保 ...

  8. C#中保留两位小数但不四舍五入的最优做法

    多种做法比较 class Program_保留两位小数但不四舍五入 { static void Main(string[] args) { Helper.Run(delegate () { metho ...

  9. JS保留两位小数 四舍五入函数

    js 四舍五入函数 toFixed(),里面的参数 就是保留小数的位数. <script language="javascript"> document.write(& ...

随机推荐

  1. HTML5 WebAudioAPI简介(一)

    一.常用对象 1.AudioContext对象 AudioContext是一个专门用于音频处理的接口,并且原理是讲AudioContext创建出来的各种节点(AudioNode)相互连接,音频数据流经 ...

  2. 收集 数据库的awr数据,生成报告

    该脚本只是把awr报告的内容,原封不动的 展现出来,做记录 awrreport.sql  脚本内容如下: *********************************************** ...

  3. C#读取Visual FoxPro(*.dbf)数据并使用SqlBulkCopy插入到SqlServer 2008 R2数据表中

    公司数据库从32位的SqlServer 2005升级到64位的SqlServer 2008 R2后,无法再像原来通过Link Server连接VFP同步数据,因此考虑用代码程序从VFP数据库中读取所需 ...

  4. Linux sz rz

    借助XShell,使用linux命令 root 账号登陆: su root 1.编译安装 wget http://www.ohse.de/uwe/releases/lrzsz-0.12.20.tar. ...

  5. yum安装ftp服务器

    1.安装vsftp,本文采用yum安装: #yum install vsftpd 2.安装后运行: # service vsftpd restart Shutting downvsftpd:      ...

  6. HTML5有语义的内联元素详解

    HTML5有语义的内联元素详解 time标签 time 元素表示一个时间值,比如 5:35 P.M., EST, April 23, 2007.例如: Example Source Code:< ...

  7. Python 基础-python函数

    函数    1.def    2.命名    3.函数体    4.return 返回值 def get_return(): a = 1 return a 函数参数有 形参和实参    定义几个形参就 ...

  8. CentOS 6.4编译安装淘宝web服务器Tengine

    Tengine 是由淘宝核心系统部基于Nginx开发的Web服务器,它在Nginx的基础上,针对大访问量网站的需求,添加了很多功能和特性.Tengine的性能和稳定性已经在大型的网站如淘宝网,淘宝商城 ...

  9. EasyUI篇の日期控件

    页面代码: <input type="text" id='astartTime' class="easyui-datebox" style="w ...

  10. google chrome中如何删除一条输入网址提示

    在google chrome中网站栏输入字母的时候会出现网址的提示,如下图: 之前遇到个问题,不知道之前打错了www.baidu.com为wwww.baidu.com(也会跳转到百度)导致一输入“w” ...