当前位置: 首页 > news >正文

c#动态保留小数位数的数值格式化方法实例----从小数点后非零数字保留两位进行四舍五入

c#动态保留小数位数的数值格式化方法实例----从小数点后非零数字保留两位进行四舍五入

  • 功能介绍
    • 代码案例
    • 输出结果
    • 封装扩展方法
      • 控制台调用
    • 其他方法地址

功能介绍

1. 输入的数字是整数,则直接返回整数部分的字符串表示。

2. 如果输入的数字是小数,则执行以下步骤:

    2.1 如果小数部分.后以".0"开头(例如:0.00013),需要动态计算显示,不允许固定保留小数位数。这意味着不能直接保留两位小数,因为无法确定后面有多少位0。直接保留会显示为0或者0.00

    2.2 如果小数部分不以".0"开头,直接进行四舍五入并保留小数位数。

该方法的目的是根据输入的数字进行判断和处理,使得最终输出的字符串满足上述保留小数的规则。

代码案例

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 name="number"></param>/// <returns></returns>static string FormatNumber(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.##");}}}
}

输出结果

在这里插入图片描述

封装扩展方法


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.##");}}}

控制台调用

     double num = 2567.11233;Console.WriteLine(num.FormatNumber());

其他方法地址

.NET(C#)将十进制数四舍五入保留第一个非零小数(Math.Round())

如果有哪位前辈或同胞了解类似以上转换合适的方法、以及依赖包,可以说明下,一起学习进步,本次遇到记录一下~

相关文章:

c#动态保留小数位数的数值格式化方法实例----从小数点后非零数字保留两位进行四舍五入

c#动态保留小数位数的数值格式化方法实例----从小数点后非零数字保留两位进行四舍五入 功能介绍代码案例输出结果封装扩展方法控制台调用 其他方法地址 功能介绍 1. 输入的数字是整数&#xff0c;则直接返回整数部分的字符串表示。 2. 如果输入的数字是小数&#xff0c;则执行…...

大数据精准营销大数据平台应用场景有哪些,平台优势有哪些?

精准营销大数据平台应用场景有很多种&#xff0c;比如在银行领域&#xff0c;我通过相应的客户数据&#xff0c;也可以给客户推广一些银行业务。还可以运用于证券行业&#xff0c;除此之外还可以运用于保险或者信托行业&#xff0c;借助精准营销大数据平台可以进行主动营销。那…...

Pyspark案例综合(数据计算)

数据计算 map方法 map算子 map算子&#xff08;成员方法&#xff09;接受一个处理函数&#xff0c;可用lambda快速编写&#xff0c;对RDD内的元素一一处理&#xff0c;返回RDD对象 链式调用 对于返回值是新的RDD的算子&#xff0c;可以通过链式调用的方式多次调用算子 &q…...

电路电子技术1--关联参考方向及功率的计算

1.判断 电流由元件的低点位端流向高电位端的参考方向称为关联参考方向。() 考点&#xff1a;电流、电压的参考方向 解释&#xff1a;在一些复杂的电路中&#xff0c;往往不能预先确定某段电路上的电流、电压的实际方向&#xff0c;所以引进了 “关联参考方向”。为了能够解决问…...

【C++】AVL树的插入操作实现以及验证是否正确(带平衡因子)

文章目录 前言一、AVL树结点的定义二、AVL树的插入&#xff08;Insert&#xff09;插入完整代码&#xff1a;1.左单旋&#xff08;RotateL&#xff09;2.右单旋&#xff08;RotateR&#xff09;3.先右单旋再左单旋&#xff08;RotateRL&#xff09;1.保存的bf为02.保存的bf为13…...

【Linux-Day10-信号量,共享内存,消息队列】

信号量 信号量描述 信号量是一个特殊的变量&#xff0c;一般取正数值。它的值代表允许访问的资源数目&#xff0c;获取资源 时&#xff0c;需要对信号量的值进行原子减一&#xff0c;该操作被称为 P 操作。 当信号量值为 0 时&#xff0c;代表没有资源可用&#xff0c;P 操作…...

使用IntelliJ IDEA本地启动调试Flink流计算工程的2个异常解决

记录&#xff1a;471 场景&#xff1a;使用IntelliJ IDEA本地启动调试Flink流计算时&#xff0c;报错一&#xff1a;加载DataStream报错java.lang.ClassNotFoundException。报错二&#xff1a;No ExecutorFactory found to execute the application。 版本&#xff1a;JDK 1.…...

对象及日期对象

对象 1.什么是对象 类是对象的抽象,对象是类的实例 程序算法数据结构 万物皆对象,对象是一个具体的事物,看到见摸得着,对象是一组无序相关属性和方法的集合(无序,所以对象没有length属性),所有事物都是对象,列如字符串,数值,数组,函数等. 属性:事物的特征,在对象中用属性表…...

鼠标滚轮编码器解析

文章目录 前言一、鼠标滚轮编码器逻辑&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 鼠标滚轮编码器为三脚接入&#xff0c;一个COM脚C&#xff08;一般是接地&#xff09;&#xff0c;两个脉冲波形输入脚A、B&#xff0c;转动滚轮编码器会在两个脉冲输入脚上产生脉冲…...

【PTA】攀拓(PAT)- 程序设计(甲级)2023年春季考试

个人学习记录&#xff0c;代码难免不尽人意。 今天又斥资买了今年春季的真题一试&#xff0c;呃&#xff0c;感觉尽力了&#xff0c;89分&#xff0c;在当年排名23&#xff0c;感觉还不错&#xff0c;没有出现读不懂的题目和没有思路的情况&#xff0c;扣的11分分别是第二题两个…...

Spring Cloud Gateway 实现原理

Spring Cloud Gateway是Spring Cloud生态系统中的一个组件&#xff0c;用于构建基于Spring Boot的微服务架构中的网关服务。它的主要目的是提供一种灵活的方式来路由、过滤和转换HTTP请求&#xff0c;从而允许您构建强大、高性能的微服务应用程序。 以下是Spring Cloud Gatewa…...

嘉泰实业:真实低门槛,安全有保障

在互联网金融大行其道的当下&#xff0c;无论用户是多么的青睐、喜爱这种便捷的理财方式&#xff0c;也一定得把资金安全放在心上。要投就投那些实力背景雄厚&#xff0c;诚信经营的平台&#xff0c;可以选择投资用户基数庞大的理财老品牌&#xff0c;也可以选择发展势头迅猛的…...

spring boot 2.7 -> 3.0升级指南

spring boot提供一个版本迁移指南 2.7 -> 3.0...

MQTT 连接优化指南

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…...

算法和数据结构学习中的一些小的工具函数

算法和数据结构学习中的一些小的工具函数 作者&#xff1a;Grey 原文地址&#xff1a; 博客园&#xff1a;算法和数据结构学习中的一些小的工具函数 CSDN&#xff1a;算法和数据结构学习中的一些小的工具函数 提取一个数二进制最右侧的 1 比如二进制为&#xff1a;0100 0…...

解决2K/4K高分屏下Vmware等虚拟机下Kail Linux界面显示问题

问题现象 在我们日常使用VirtualBox、Vmware workstation、Hyper-V等虚拟机安装使用Kali系统&#xff0c;在2K/4K高分辨率电脑下Kali系统界面显示太小&#xff0c;包括各种软件及命令终端字体均无法很直观的看出&#xff0c;影响我们的正常测试及使用。 常规处理思路 很多人…...

【校招VIP】java语言考点之双亲委派模型

考点介绍&#xff1a; 双亲委派是校招面试中的高频考点之一。双亲委派机制定义: 当一个类加载器收到了类加载的请求的时候&#xff0c;他不会直接去加载指定的类&#xff0c;而是把这个请求委托给自己的父加载器去加载&#xff0c;只有父加载器无法加载这个类的时候&#xff0…...

2023年阿里云新用户云服务器价格表

阿里云&#xff0c;作为国内领先的云计算服务提供商&#xff0c;一直致力于为全球用户提供安全、稳定、高效的云计算服务。对于新用户来说&#xff0c;阿里云服务器是一个非常不错的选择。那么&#xff0c;阿里云新用户云服务器的价格是怎样的呢&#xff1f;本文将为大家详细介…...

信号相关名词概念汇总-采样周期、泄露、窗函数等

信号相关名词概念汇总-采样周期、泄露、窗函数等 以下为信号相关名词概念的汇总 1 名词解释 采样周期/间隔&#xff1a;采样频率的倒数&#xff0c;两次相邻采样之间的时间间隔采样时间&#xff1a;采样的总时长&#xff0c;即采样点数N和采样周期的乘积采样频率&#xff1a; …...

数字化新零售营销模式如何落地?数字化新零售营销功能推荐

​通过科技手段&#xff0c;针对对线下零售店面的客户进行消费行为、频次等的分析&#xff0c;并进一步整合线上线下资源&#xff0c;实现实体零售的效率充分化&#xff0c;便是目前很火的新零售营销模式&#xff0c;能够将实体门店与数字化技术进行有机结合&#xff0c;通过为…...

712. 两个字符串的最小ASCII删除和 -- 动规

712. 两个字符串的最小ASCII删除和 class MinimumDeleteSum:"""712. 两个字符串的最小ASCII删除和https://leetcode.cn/problems/minimum-ascii-delete-sum-for-two-strings/"""def solution(self, s1: str, s2: str) -> int:""&qu…...

python中的小tips

1、注释 1、注释快捷键&#xff1a; Ctrl/ 可以注释掉光标所在的这一行&#xff0c;或者是选中的区域。 对于注释掉的这一行或者这一区域&#xff0c;按下ctrl/则会去掉注释。 2、多行注释 在写多行注释时&#xff0c;英文状态下写三个"&#xff0c;会自动变成六个"&…...

高精度(加减乘除)

高精度算法出现的原因 当参与运算的数的范围大大的超出了标准数据类型&#xff0c;如int&#xff08;-2147483648 ~ 2147483647&#xff09;或者long long的范围&#xff0c;就需要使用高精度算法来进行数的运算。高精度运算的特点是代码长度比较长&#xff0c;本质是对数学运算…...

java企业数据管理系统

项目介绍 此项目为企业数据管理系统的后端部分&#xff0c;前端部分请参考vue-admin&#xff0c;项目实现了菜单管理、用户管理、角色管理和权限管理四个基础模块&#xff0c;前端菜单管理结合动态路由可自由添加菜单。结合Shiro权限管理实现了菜单和按钮的权限控制。 ❝ 前端…...

【云原生进阶之PaaS中间件】第二章Zookeeper-3.1分布式架构介绍

1 分布式架构详解 1.1 分布式发展历程 1.1.1 单点集中式 特点&#xff1a;App、DB、FileServer都部署在一台机器上。并且访问请求量较少 1.1.2 应用服务和数据服务拆分 特点&#xff1a;App、DB、FileServer分别部署在独立服务器上。并且访问请求量较少 1.1.3 使用缓存改善…...

2023-09-11力扣每日一题

链接&#xff1a; 630. 课程表 III 题意 一个课程花费ai天&#xff0c;需要在bi天之前修好才算成功&#xff0c;求最多能修几个课 解&#xff1a; ddl越靠后的应该越晚做&#xff0c;所以先按照b排序&#xff08;这还用问为什么吗&#xff1f; 然后通过维护一个优先队列存…...

windows10使用wheel安装tensorflow2.13.0/2.10.0 (保姆级教程)

安装过程 安装虚拟环境安装virtualenv安装满足要求的python版本使用virtualenv创建指定python版本的虚拟环境 安装tensorflow安装tensorflow-docs直接下载使用wheel下载 在VSCode编辑器中使用虚拟环境下的python解释器&#xff0c;并使用tensorflow常见错误 注意&#xff1a; t…...

【LeetCode与《代码随想录》】贪心算法篇:做题笔记与总结-JavaScript版

代码随想录 贪心的本质是选择每一阶段的局部最优&#xff0c;从而达到全局最优。 文章目录 455. 分发饼干376. 摆动序列53. 最大子数组和122. 买卖股票的最佳时机 II55. 跳跃游戏45. 跳跃游戏 II1005. K 次取反后最大化的数组和134. 加油站135. 分发糖果&#xff08;困难&#…...

Http客户端OkHttp的基本使用

简介 OkHttp是一个强大的开源HTTP客户端&#xff0c;它被广泛用于Android和Java应用程序中。OkHttp具有简单易用的API&#xff0c;提供了许多高级功能&#xff0c;如连接池、请求压缩和缓存等。 依赖 要使用OkHttp&#xff0c;需要在项目的构建文件中添加以下依赖&#xff1…...

认识网线上的各种参数标号

最近工作需要&#xff0c;接触了很多不同类型的网线&#xff0c;为了能够区分不同型号的网线&#xff0c;特意做一篇笔记用来学习&#xff0c;如有记录有误之处&#xff0c;欢迎大家指正~初步认识网线 常用的网络电缆有三种&#xff1a;双绞线、同轴电缆和光纤电缆&#xff08…...

有哪些做壁纸的网站/百度企业号

Description Input Output Sample Input 3 2 7 11 1 5 3 8 4 7 Sample Output 5 Data Constraint 分析 x为该点可以采的矿石种类量 一个点的方案数为2^k-1 那么当前点可以采的矿石种类量和之前的重叠了y中&#xff0c;而没有重叠的为z种 方案数则为(2^y)*(2^z -1) 然后我们给点…...

营销型网站建设定制网站建设/百度极速版app下载

前言#回歸使用 vim 當作主要開發工具後&#xff0c;為了省下調效 vimrc 的時間&#xff0c;決定先用別人整理好的設定&#xff0c;於是乎找到了 spf13-vim&#xff0c;便開始的了快樂的 vim 生活。spf13-vim 用了數個月之後&#xff0c;熟悉了不少的設定方式&#xff0c;也調整…...

产品宣传推广方案/搜索引擎seo优化平台

一片好心说出的大实话&#xff0c;却被老板理解为消极、抱怨或者别有用心。即使老板再和蔼、通情达理、信任你、欣赏你&#xff0c;也不意味着他&#xff08;她&#xff09;变成你的挚友、铁哥们、闺蜜或者恩师&#xff0c;以下这些傻话&#xff0c;千万别再说出口了。 职场傻话…...

如何知道一个网站是谁做的/seo黑帽多久入门

12月4日&#xff0c;SUN公司终于推出了基于JAVA语言的平台JavaFx 1.0版本。这个平台建立在其广泛应用的Java编程语言的基础上&#xff0c;旨在建立大量可在电脑和手机上运行的网络程序。 Java一直以来就是编程语言&#xff0c;但是随着JavaFX的发布&#xff0c;Sun公司开始允许…...

电子商务网站计划书/外贸google推广

赋值语句>赋值是改变一个变量的值和改变表域的最基本的方法a "hello" .. "world" b 10 t.n t.n 1 >Lua 可以对多个变量同时赋值&#xff0c;变量列表和值列表的各个元素用逗号分开&#xff0c;赋值语句右边的值会依次赋给左边的变量 a, b 10, 2…...

有经验的企业网站建设/制作网站推广

一面 一面就做了一道算法题&#xff0c;要求两小时内完成&#xff0c;给了长度为N的有重复元素的数组&#xff0c;要求输出第10大的数。典型的TopK问题&#xff0c;快排算法搞定。 算法题要注意的是合法性校验、边界条件以及异常的处理。另外&#xff0c;如果要写测试用例&am…...