C#中格式化小数位数为指定位数的工具类
场景
C#中怎样格式化小数位数为指定位数的工具类。
注:
博客主页:
https://blog.csdn.net/badao_liumang_qizhi
关注公众号
霸道的程序猿
获取编程相关电子书、教程推送与免费下载
实现
首先新建工具类DataProcessor,然后在工具类下新建方法FormatFloatValue
/// <summary>/// 格式化小数位数/// </summary>/// <param name="floatValue">要格式化的小数对象</param>/// <param name="maxPrecision">保留的最大小数位数</param>/// <returns>返回格式化后的小数字符串值</returns>public static object FormatFloatValue(object floatValue, int maxPrecision){if (IsNullOrEmpty(floatValue)){return String.Empty;}else{int intPrecision = GetValidPrecision(floatValue, maxPrecision);return String.Format("{0:f" + intPrecision + "}", floatValue);}}
其中用到了获取浮点数值的有效小数位数的方法GetValidPrecision
/// <summary>/// 获取浮点数值的有效小数位数/// </summary>/// <param name="value">浮点数值</param>/// <param name="maxPrecision">允许返回的最大小数位数</param>/// <returns>返回有效小数位数</returns>public static int GetValidPrecision(object value, int maxPrecision){if (DataProcessor.IsNullOrEmpty(value)){return 0;}else{if (value.ToString().IndexOf(".") == -1){return 0;}else{string strValue = value.ToString();string precision = strValue.Substring(strValue.IndexOf(".") + 1);int cnt = 0; //保存末尾0的个数for (int i = precision.Length - 1; i > 0; i--){if (precision.ToCharArray()[i] == '0'){cnt++;}else{break;}}int result = precision.Length - cnt; //为有效小数位数if (result > maxPrecision){return maxPrecision;}else{return result;}}}}
这其中又用到了判空的方法IsNullOrEmpty
/// <summary>/// 判断是否为空/// </summary>/// <param name="value">要判断的对象</param>/// <returns>为空返回true,否则返回false</returns>public static bool IsNullOrEmpty(object value){if (value == null || value == DBNull.Value || string.IsNullOrWhiteSpace(value.ToString())){return true;}return false;}
调用示例
object value = DataProcessor.FormatFloatValue(obj, 3);
表示要将小数格式为3为小数位数。
效果
格式化前
格式化后
C#中格式化小数位数为指定位数的工具类相关推荐
- python保留一位小数format_Python保留指定位数的小数
Python保留指定位数的小数 1 '%.2f' %f 方法(推荐) f = 1.23456 print('%.4f' % f) print('%.3f' % f) print('%.2f' % f) ...
- Java格式化日期用斜杠_[java工具类01]__构建格式化输出日期和时间的工具类
在之前的学习中,我写过一篇关于字符串格式化的,就主要设计到了时间以及日期的各种格式化显示的设置,其主要时通过String类的fomat()方法实现的. 我们可以通过使用不同的转换符来实现格式化显示不同 ...
- Java中windows路径转换成linux路径等工具类
项目中发现别人写好的操作系统相关的工具类: 我总结的类似相关博客:http://www.cnblogs.com/DreamDrive/p/4289860.html 1 import java.net. ...
- java 中格式化小数位数
http://terran-li2008.iteye.com/blog/205135 double d = 221.62999999999997 ; NumberFormat format = N ...
- Java中的微信支付: 微信API-V3签名生成工具类
微信支付API v3简介 微信官方文档地址 为了在 保证支付 安全的前提下,带给商户 简单.一致且易用的开发体验,我们推出了全新的微信支付API v3. 相较于之前的微信支付API,主要区别是: 遵循 ...
- java中数字格式金额转换成中文大写金额工具类
/*** 金额转换工具类*/ public class MoneyUtils {private static final String UNIT = "万千佰拾亿千佰拾万千佰拾元角分&quo ...
- Python输出指定位数的小数
输出指定位数的小数 python输出指定位数小数: 规定输出保留X的N位小数: 1)print('%.Nf'%X)或者print("%.Nf"%X) 2)print(format( ...
- js中获取小数点后两位小数
在 JavaScript 中,可以使用 toFixed() 方法来获取小数点后的指定位数. 例如,如果要获取一个数字的小数点后两位小数,可以这样写: var num = 3.14159265; var ...
- java aes 工具类_Java中的AES加解密工具类:AESUtils
本人手写已测试,大家可以参考使用 package com.mirana.frame.utils.encrypt; import com.mirana.frame.constants.SysConsta ...
最新文章
- uniapp 长链接 socket 封装
- 每天一道Leetcod或者Codeforce算法系列
- imagesLoaded-检测图片是否正确加载的js插件
- 创建设计模式 - 抽象工厂设计模式
- 尝试笔记 01 之 CSS 边角上的标签
- matlab简单分析矩阵乘法——一阶行向量乘一阶列向量
- 用SpringBoot集成Netty开发一个基于WebSocket的聊天室
- 腾讯正式对外开源高性能 RPC 开发框架与微服务平台Tars
- 散乱插值及MATLAB绘图函数
- 1.4多媒体技术的发展历史
- PHP+经贸时间轴 毕业设计-附源码211617
- 10月全球搜索引擎市场份额:Google、Bing份额大涨
- 如何理解相关性系数(pearson、spearman、kendall)
- fastq与fasta文件格式解析
- 住建部发布《全国建筑工人管理服务信息平台数据对接方案》
- 电子邮件发送服务器怎么看钱,验证电子邮件的验证码是发到哪里
- 二叉树的递归遍历及非递归遍历
- php 环回地址,环回地址(127.0.0.1)的作用
- 133 十面埋伏的并发(二):自旋锁
- c语言实验一,c语言实验-实验一.doc
热门文章
- JSP内置对象(request、session、application)
- XOR Specia-LIS-t 异或和 贪心
- 华为12月份鸿蒙适配mate40,华为:Mate40系列在12月可优先升级鸿蒙系统
- IDEA运行VUE项目
- 支付业务流程--h5、APP
- VS2017 error C3646: 未知重写说明符
- 英语什么意思_“你什么意思”用英语怎么说?千万不要说成“What#39;s your meaning?”...
- monthdiff oracle_timestampdiff
- mysql主从同步配置超详细_MySQL主从同步配置
- caxa明细表导入零件材质_各种橡胶材质橡胶制品