网站建设 管理系统开发,新世纪建设集团网站,php网站模板制作工具,淄博软件开发公司有哪些c#动态保留小数位数的数值格式化方法实例----从小数点后非零数字保留两位进行四舍五入 1、功能介绍2、代码案例3、输出结果4、封装扩展方法5、控制台调用 6、其他方法地址 1、功能介绍
1. 输入的数字是整数#xff0c;则直接返回整数部分的字符串表示。
2. 如果输入的数字是… c#动态保留小数位数的数值格式化方法实例----从小数点后非零数字保留两位进行四舍五入 1、功能介绍2、代码案例3、输出结果4、封装扩展方法5、控制台调用 6、其他方法地址 1、功能介绍
1. 输入的数字是整数则直接返回整数部分的字符串表示。
2. 如果输入的数字是小数则执行以下步骤 2.1 如果小数部分.后以.0开头例如0.00013需要动态计算显示不允许固定保留小数位数。这意味着不能直接保留两位小数因为无法确定后面有多少位0。直接保留会显示为0或者0.00 2.2 如果小数部分不以.0开头直接进行四舍五入并保留小数位数。
该方法的目的是根据输入的数字进行判断和处理使得最终输出的字符串满足上述保留小数的规则。
2、代码案例
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApp4
{class Program{static void Main(string[] args){Console.WriteLine($原始值567--------转换后的值{FormatNumber(567)});Console.WriteLine($原始值0.00000196--------转换后的值{FormatNumber(0.00000196)});Console.WriteLine($原始值831.00002455--------转换后的值{FormatNumber(831.00002455)});Console.WriteLine($原始值76.008921--------转换后的值{FormatNumber(76.008921)});Console.WriteLine($原始值0.003333333--------转换后的值{FormatNumber(0.003333333)});Console.WriteLine($原始值0.54241218115613401401552902563902978171--------转换后的值{FormatNumber(0.54241218115613401401552902563902978171)});}/// summary/// 计算保留小数/// 1、整数如果是整数则直接返回/// 2、小数/// 2.1小数点后以.0开头需要动态计算显示假如0.00013直接保留两位岂不是0.00了又不确定后面有多少位0不允许固定保留小数位/// 2.2小数点后不为.0开头直接四舍五入保存/// 0.00001显示为0.00001/// 0.00000196显示为0.000002/// 76.008921显示为76.0089/// 831.00002455显示为831.000025/// 0.003333333显示为0.0033/// 0.54241218115613401401552902563902978171显示为0.54/// 567显示为567/// /summary/// param namenumber/param/// returns/returnsstatic string FormatNumber(double number){try{// 判断是否整数如果是直接返回整数部分if (number Math.Floor(number)){return number.ToString(0);}else if (number 0){//引用.NET(C#)将十进制数四舍五入保留第一个非零小数(Math.Round())见6、其他方法地址int precision 0;var val number;while (Math.Abs(val) 1){val * 10;precision;if (precision 10) // 设置一个最大精度限制避免无限循环break;}return ((double)Math.Round(number, precision 1)).ToString();}else{// 获取小数部分double decimalPart number - Math.Floor(number);// 转换小数部分为字符串string decimalPartString decimalPart.ToString(0.##############################);// 找到小数点的位置int dotIndex decimalPartString.IndexOf(.);// 计算小数部分的 .0 开头的零的数量int zeroCount 0;for (int i dotIndex 1; i decimalPartString.Length; i){if (decimalPartString[i] 0){zeroCount;}else{break;}}// 生成保留小数位数的格式字符串string formatString;if (zeroCount 0){formatString 0.00; // 如果没有 .0 开头的零保留两位小数}else{formatString 0. new string(#, 2 zeroCount); // 否则根据零的数量生成格式字符串}return number.ToString(formatString);}}catch (Exception ex){return number.ToString(0.##);}}}
}
3、输出结果 4、封装扩展方法 public static class FormatExtension
{public static string FormatNumber(this double number){try{// 判断是否整数如果是直接返回整数部分if (number Math.Floor(number)){return number.ToString(0);}else{// 获取小数部分double decimalPart number - Math.Floor(number);// 转换小数部分为字符串string decimalPartString decimalPart.ToString(0.##############################);// 找到小数点的位置int dotIndex decimalPartString.IndexOf(.);// 计算小数部分的 .0 开头的零的数量int zeroCount 0;for (int i dotIndex 1; i decimalPartString.Length; i){if (decimalPartString[i] 0){zeroCount;}else{break;}}// 生成保留小数位数的格式字符串string formatString;if (zeroCount 0){formatString 0.00; // 如果没有 .0 开头的零保留两位小数}else{formatString 0. new string(#, 2 zeroCount); // 否则根据零的数量生成格式字符串}return number.ToString(formatString);}}catch (Exception ex){return number.ToString(0.##);}}}
5、控制台调用 double num 2567.11233;Console.WriteLine(num.FormatNumber());6、其他方法地址
.NET(C#)将十进制数四舍五入保留第一个非零小数(Math.Round())
如果有哪位前辈或同胞了解类似以上转换合适的方法、以及依赖包可以说明下一起学习进步本次遇到记录一下~