C#四舍五入说明
2024-08-26 06:28:58
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);
}
最新文章
- Android图书应用-西游记
- 手写原生ajax
- C - NP-Hard Problem
- ORB-SLAM(三)地图初始化
- sharepoint custom web service
- Android -- 自定义View小Demo,绘制四位数随机码(一)
- Form文件夹开发步骤
- Hark的数据结构与算法练习之多路归并排序
- SSAS 实例重命名
- php开发入门教程
- EasyUI - SearchBox 搜索框
- 撸一个Android高性能日历控件,高仿魅族
- 用万能马甲免费看VIP电影
- iTOP-6818开发板支持AXP228电源管理[官方推荐最佳匹配]_支持动态调频
- ubuntu ufw防火墙软件的配置入门
- Python Django 学习 (一) 【Django 框架初探】
- jquery中的全选、反选、全不选和单删、批删
- 如何利用京东云的对象存储(OSS)上传下载文件
- Log4js 工作原理及代码简析
- MySql-5.7.17 -winx64的安装配置
热门文章
- IPv6调用java后端接口报错:java.net.SocketException: Protocol family unavailable
- BASIC-3_蓝桥杯_字母图形
- [转]win server 2003 + IIS 6 搭建MVC 运行环境
- linux下安装jdk7
- 样式学习--参照Oracle写法
- bootstrap 教程分享
- Spark 编程模型(上)
- JavaScript中的闭包与匿名函数
- Python环境搭建之OpenCV
- python实现一个栏目的分页抓取列表页抓取