保留n位四舍五入小数
一:可选择保留位数,注释很解释的很详细,上图

二:全部代码
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位四舍五入小数的更多相关文章
- 【转载】C#中decimal保留2位有效小数
在C#的数字运算过程中,有时候针对十进制decimal类型的计算需要保留2位有效小数,针对decimal变量保留2位有效小数有多种方法,可以使用Math.Round方法以及ToString先转换为字符 ...
- C# 保留2位小数
1.只要求保留N位不四舍5入 float f = 0.55555f; int i =(int)(f * 100); ...
- asp.net保留两位小数
1.System.Globalization.NumberFormatInfo provider = new System.Globalization.NumberFormatInfo();provi ...
- C# 保留N位小数
1.只要求保留N位不四舍五入 float f = 0.55555f; int i =(int)(f * 100); f = (float)(i*1.0) ...
- sql 保留两位小数+四舍五入
1. ROUND(该函数,只是负责四舍五入到两位小数,但是不负责截断 只留两位小数,例如下例:) 关于ROUND函数,我们平常理解为4舍5入,如: print ROUND(13.145, 2); 结果 ...
- Double 数据保留两位小数二:直接截取小数后面两位,不进行四舍五入
package com; public class T2 { public static void main(String[] args) { System.out.println(calculate ...
- (转)JS保留两位小数 四舍五入函数
本文转载自:http://www.cnblogs.com/446557021/archive/2011/10/13/2211047.html js 四舍五入函数 toFixed(),里面的参数 就是保 ...
- C#中保留两位小数但不四舍五入的最优做法
多种做法比较 class Program_保留两位小数但不四舍五入 { static void Main(string[] args) { Helper.Run(delegate () { metho ...
- JS保留两位小数 四舍五入函数
js 四舍五入函数 toFixed(),里面的参数 就是保留小数的位数. <script language="javascript"> document.write(& ...
随机推荐
- Unity3D GUI学习之GUILayout控件及使用
GUILayout也可以定义一些控件,并且它们会自动垂直对其: GUILayout.Button("开始游戏"); GUILayout.Button("结束游戏" ...
- Java实现ajax
jsp端的代码,sucess:function(){} 里面就是返回的处理 function ChangeTime(){ alert("www"); var startYmd = ...
- listActivity和ExpandableListActivity的简单用法
http://www.cnblogs.com/limingblogs/archive/2011/10/09/2204866.html 今天自己简单的总结了listActivity和Expandable ...
- ASP.NET Excel数据导入数据库
<identity impersonate="true"/> 是指模拟IIS身份验证 導入錯誤時可刪除 protected void btnImport_Click(o ...
- 非常不错的ASP操作数据库类,支持多数据库MSSQL,ACCESS,ORACLE,MYSQL等
可同时操作多个不同类型的数据库. 完全不用考虑数据类型的差别,再也不用想字符型字段加不加单引号. 调用非常简单,对数据库的主要操作一般只需要一行代码. 支持mssql事务回滚. 可自动生成和输出sql ...
- exp/imp 有很多弊端
弊端1. 空表 无法执行导出操作弊端2. 高版本的导出文件 无法使用 低版本的 oracle软件 导入 环境准备:create table test0707(n1 date); 认证弊端1 案例1. ...
- Linux下安装Nginx1.9.3-0303(本人亲手实践)
Linux下安装Nginx1.9.3 Linux操作系统 Oel 5.8 64bit 最新版Nginx: 1.9.3 最近同事让我帮忙搞 ngix,两天时间 安装.配置搞定了.继续 Nginx 1.9 ...
- base64加密解密文件
1 //字符串加密 -(void)demo1 { //普通的 8 bit二进制数据 NSString *str = @"hello world!"; //将字符串转换成二进制数据 ...
- Java学习----创建对象的数组
1.初始化数组的长度 2.初始化每个元素对象 3.调用每个对象的方法 public class Student { private String name; public Student() {} p ...
- Javascript参数传递中值和引用的一种理解
值(value)和引用(reference)是各种编程语言老生常谈的话题,js也不例外. 我将剖析一个例子的实际运行过程,跟大家分享我对js参数传递中的值和引用的理解. 参考官网数据类型的两种分类,本 ...