string.Format("{0:N2}", d) 与 Math.Round(d, 2).ToString() 不总是相等

string.Format("{0:N2}", d) 与 RoundChinese(d, 2).ToString() 总是相等

        private static void TestDisplayDecimal()
{
// 结论1:string.Format("{0:N2}", d) 与 Math.Round(d, 2).ToString() 【不总是相等】
// 结论2:string.Format("{0:N2}", d) 与 RoundChinese(d, 2).ToString() 【总是相等】 for (var i = ; i <= ; i++)
{
var d = 2.14M + i / 1000M;
bool ret = string.Format("{0:N2}", d) == Math.Round(d, ).ToString();
if (!ret)
{
Console.WriteLine(d + ":" + string.Format("{0:N2}", d) + "," + Math.Round(d, ) + "," + ret);
}
} Console.WriteLine("-----------------------"); for (var i = ; i <= ; i++)
{
var d = 2.14M + i / 1000M;
bool ret = string.Format("{0:N2}", d) == RoundChinese(d, ).ToString(); Console.WriteLine(d + ":" + string.Format("{0:N2}", d) + "," + RoundChinese(d, ).ToString() + "," + ret);
}
}
        /// <summary>
/// 中国版的四舍五入
/// </summary>
/// <param name="value"></param>
/// <param name="digit"></param>
/// <returns></returns>
public static decimal RoundChinese(decimal value, int digit)
{
double vt = Math.Pow(, digit);
//1.乘以倍数 + 0.5
decimal vx = value * (decimal)vt + 0.5M;
//2.向下取整
decimal temp = Math.Floor(vx);
//3.再除以倍数
return (temp / (decimal)vt);
}

C#四舍五入说明的更多相关文章

  1. 关于delphi7的四舍五入

    round 函数是银行用的 采用了 四舍六入5留偶 网上找到了个实现方法   先乘1000,用Trunc取整,除10取余,余数再取整,如果大于5,进位,小于5不进位. 函数就好写了 现在只写一个保留两 ...

  2. SQL SERVER四舍五入你除了用ROUND还有其他方法吗?

    引言 今天和测试沟通一个百分比计算方式时遇到一个问题, 我在存储过程里用到了强转CAST(32.678 AS DECIMAL(5,1))  我认为该方式只会保留一位小数,我给测试的回复是我并没有用到四 ...

  3. C# decimal保留指定的小数位数,不四舍五入

    decimal保留指定位数小数的时候,.NET自带的方法都是四舍五入的. 项目中遇到分摊金额的情况,最后一条的金额=总金额-已经分摊金额的和. 这样可能导致最后一条分摊的时候是负数,所以自己写了一个保 ...

  4. Chrome/Firefox 中头toFixed方法四舍五入兼容性问题

    每个Number的toFixed()方法可把 Number 四舍五入为指定小数位数的数字.四舍五入顾名思义,4及以下舍去,5及以上加1. 四舍 1.31.toFixed(1) // 1.3 1.32. ...

  5. Javascript四舍五入(Math.round()与Math.pow())

    代码 Code highlighting produced by Actipro CodeHighlighter (freeware) http://www.CodeHighlighter.com/ ...

  6. JS处理四舍五入函数 toFixed(n)(可取小数点后n位)

    在JS中四舍五入的函数 toFixed(n) , n为要保留的小数位数. n为0~20,当n超过20的时候,JS会出错. 如果小数点前和要截取的前一位都是0时,不会按常理截取.       var h ...

  7. iOS 常用的向上,向下取整, 四舍五入函数

    向上取整:ceil(x),返回不小于x的最小整数; 向下取整:floor(x),返回不大于x的最大整数; 四舍五入:round(x) 截尾取整函数:trunc(x)  

  8. js 四舍五入

    举例excel: ROUND 会四舍五入的:ROUNDDOWN 取小数点后两位数据,不管进位问题:ROUNDUP 取小数点后两位数据,只要有第三位小数都会进位的.关键看你取数的要求   在js如果要求 ...

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

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

  10. Java中的四舍五入

    经典案例分析:public class RoundTest {    public static void main(String[] args) {        System.err.printl ...

随机推荐

  1. PHP 小技巧之如何避免参数多次传递?

    开发中经常遇到函数参数传递的问题:比如 A调用B,B调用C,C调用D, A->B->C->D 而D方法可能需要一个参数,这个参数只能在A中获取(比如A是控制器方法),这个参数这样一级 ...

  2. Fatal error: Unable to find local grunt.

    https://stackoverflow.com/questions/15483735/fatal-error-unable-to-find-local-grunt-when-running-gru ...

  3. 用Keras搭建神经网络 简单模版(一)——Regressor 回归

    首先需要下载Keras,可以看到我用的是TensorFlow 的backend 自己构建虚拟数据,x是-1到1之间的数,y为0.5*x+2,可视化出来 # -*- coding: utf-8 -*- ...

  4. Windows下python 安装Mysqldb模块

    CMD执行 pip install mysql-python 报错如下: 1.如果报类似 Microsoft Visual C++ 9.0 is required < Unable to fin ...

  5. python学习菜单

    一.python简介 二.python字符串 三.列表 四.集合.元组.字典 五.函数 六.python 模块 七.python 高阶函数 八.python 装饰器 九.python 迭代器与生成器  ...

  6. sqoop导入导出对mysql再带数据库test能跑通用户自己建立的数据库则不行

    sqoop对hdfs导入导出怎么操作这里我就不多说了 现在说下sqoop导入导出时针对mysql后面用户手动创建的数据库导入到处遇到的问题 首先我这里搭建的是3节点集群 master slave1 s ...

  7. MAN 手册各章节功能介绍及快捷键键位整理

    前言   Man 手册页(Manua pages ,缩写man page) 是在linux操作系统在线软件文档的一种普遍形式.内容包括计算机程序库和系统调用等命令的帮助手册. 手册页是用troff排版 ...

  8. BFC概念及应用

    定义 块级格式化上下文   特性 1.内部box在垂直方向,一个接一个放置 2.box垂直方向的间距由margin决定    属于同一个BFC的相邻box的margin会发生重叠(外边距重叠)    ...

  9. Log4j发送邮件

    源码地址:https://github.com/mistbor/Log4jSendMail 引入activation.jar           log4j.jar            mail.j ...

  10. Spring 学习之AOP

    1. 走进面前切面编程 编程范式: 面向过程编程,c语言: 面向对象编程:c++,java,c#; 函数式编程: 事件驱动编程: 面向切面编程: AOP是一种编程范式,不是编程语言:解决特定问题,不能 ...