中文四舍五入

以下是中文四舍五入的算法,不是银行的四舍五入。

public static class NumbericExtension
{
/// <summary>
/// 四舍五入法
/// </summary>
/// <param name="sourceNum">要进行处理的数据</param>
/// <param name="toRemainIndex">保留的小数位数</param>
/// <returns>四舍五入后的结果</returns>
public static decimal ChineseRound(this decimal sourceNum, int toRemainIndex)
{
decimal result = sourceNum;
string sourceString = sourceNum.ToString();
//没有小数点,则返回原数据+"."+"保留小数位数个0"
if (!sourceString.Contains("."))
{
result = Convert.ToDecimal(sourceString + "." + CreateZeros(toRemainIndex));
return result;
}
//小数点的位数没有超过要保留的位数,则返回原数据+"保留小数位数 - 已有的小数位"个0
if ((sourceString.Length - sourceString.IndexOf(".") - 1) <= toRemainIndex)
{
result = Convert.ToDecimal(sourceString + CreateZeros(toRemainIndex - (sourceString.Length - sourceString.IndexOf(".") - 1)));
return result;
}
string beforeAbandon_String = string.Empty;
beforeAbandon_String = sourceString.Substring(0, sourceString.IndexOf(".") + toRemainIndex + 1);
//取得如3.1415926保小数点后4位(原始的,还没开始取舍),中的3.1415
decimal beforeAbandon_Decial = Convert.ToDecimal(beforeAbandon_String);

//如果保留小数点后N位,则判断N+1位是否大于等于5,大于,则进一,否则舍弃。
if (int.Parse(sourceString.Substring(sourceString.IndexOf(".") + toRemainIndex + 1, 1)) >= 5)
{
string toAddAfterPoint = "0." + CreateZeros(toRemainIndex - 1) + "1";
result = beforeAbandon_Decial + Convert.ToDecimal(toAddAfterPoint);
}
else
{
result = beforeAbandon_Decial;
}
return result;
}

/// <summary>
/// 补 "0"方法.
/// </summary>
/// <param name="zeroCounts">生成个数.</param>
/// <returns></returns>
private static string CreateZeros(int zeroCounts)
{
string Result = string.Empty;
if (zeroCounts == 0)
{
Result = "";
return Result;
}
for (int i = 0; i < zeroCounts; i++)
{
Result += "0";
}
return Result;
}
}

时间: 2024-10-16 23:58:23

中文四舍五入的相关文章

人民币数值转中文大写

class Num2RmbClass{ /** * 人民币数值转中文大写 * @author SunsCheung * @time 2015.11.11 * @param string $number 数值 默认为0 * @param string $int_unit 币种单位,默认"元",有的需求可能为"圆" * @param bool $is_round 是否对小数进行四舍五入 * @param bool $is_extra_zero 是否对整数部分以0结尾,小

FusionCharts参数说明 (中文)

FushionCharts是把抽象数据图示化的套件,使用方便,配置简单.其相关参数中文说明如下. FusionCharts Free中文开发指南第二版.pdf 功能特性 animation                    是否动画显示数据,默认为 1(True) showNames                    是否显示横向坐标轴(x轴)标签名称 rotateNames                是否旋转显示标签,默认为0(False):横向显示 showValues     

将一个数转化为中文金额的大写方式(有详细的解题步骤)

1 /* 2 * 程序目的: 从命令行输入一个数,并将其转化为中文金额的大写方式 3 * 思路: 4 * 所需对象:用到两个数组,一个存中文大写的数字,一个存金额单位: 5 * 为了保持精度的相对准确,用到BigDecimal类:(不懂的朋友,上网一查就知道了): 6 * 我这里用了StringBuilder类来存转化后的结果:(其实用String,StringBuffer都可以) 7 * 过程:输入一个double类型的数———>转化为BigDecimal类的对象———>四舍五入后转化为lo

Swiper 中文API手册(转自挨踢前端)

最近使用Swipe.js,发现中文的资料很少,试着翻译了一下.能力有限,翻译难免错漏,欢迎指出,多谢! 翻译自:http://www.idangero.us/sliders/swiper/api.php http://www.idangero.us/sliders/swiper/index.php 一了解Swiper Swiper 是一款免费以及轻量级的移动设备触控滑块的框架,使用硬件加速过渡(如果该设备支持的话).主要使用与移动端的网站.网页应用程序(web apps),以及原生的应用程序(n

Swiper说明&amp;&amp;API手册 【中文手册Swiper】

 原文地址:http://www.cnblogs.com/scavengers/p/3760449.html 最近使用Swipe.js,发现中文的资料很少,试着翻译了一下.能力有限,翻译难免错漏,欢迎指出,多谢! 翻译自:http://www.idangero.us/sliders/swiper/api.php http://www.idangero.us/sliders/swiper/index.php 一了解Swiper Swiper 是一款免费以及轻量级的移动设备触控滑块的框架,使用硬件加

fonts.conf 中文手册

FONTS-CONF(5) FONTS-CONF(5) 名称 fonts.conf -- 字体配置文件 文件概要 /etc/fonts/fonts.conf /etc/fonts/fonts.dtd /etc/fonts/conf.d/ $XDG_CONFIG_HOME/fontconfig/conf.d/ $XDG_CONFIG_HOME/fontconfig/fonts.conf ~/.fonts.conf.d/ ~/.fonts.conf 描述 Fontconfig 是一个字体配置函数库,

app后端设计(13)--IM4JAVA+GraphicsMagick实现中文水印

在app的后台中,有时候为了标示版权,需要给图片加上水印. 在liunx中,IM4JAVA+GraphicsMagick是个高效处理图片的方案,图片的裁剪是使用了这个技术方案,为了减少不必要的开发成本和运维成本,对应水印,我们是打算继续采用这个方案. 但在开发的过程中,发现这个方案对中文水印支持得不好. 根据网上的搜索结果,就算采用了im4java的GMOperation,并将水印的字符串转成GBK的编码,添加中文水印时,对于奇数个数的中文,没问题:但对于偶数个数的中文,就出现乱码了. 试了多次

金额小写转中文大写类

using System; using System.Collections.Generic; using System.Text; namespace Class_ZhH { /// <summary> /// 金额小写转中文大写类(附带一个数字转大写). /// 整数支持到万亿:小数部分支持到分(超过两位将进行Banker舍入法处理) /// </summary> public class NumGetString { private static String[] Ls_Sh

MATLAB 中文论坛相关帖子整理

说明: 本资料所有问题及代码均摘选自matlab中文论坛(www.ilovematlab.cn),主要供自己学习使用. 非常感谢论坛的所有提出以及解答问题的会员. 目   录 1.GUI新手之--教你读懂GUI的M文件... 10 2.GUI程序中改变current directory引起的问题... 15 3.GUI中h0bject和handles 的区别... 16 4.handles结构中句柄和对象的关联问题... 17 5.Matlab利用定时器连续显示图片的问题... 19 5-1.G