【小数点】C#使用Math.Round方法保留指定小数点位数,并且整数也同样保持统一的2位
2023年,第38周。给自己一个目标,然后坚持总会有收货,不信你试试!
在实际开发项目中,特别是涉及金额之类的字段,一般都会用到小数,有些是保留1、2、3小数点。
本篇文章主要简单讲讲,如何保持整数、1位小数等都统一保持2位小数点
目录
- 一、业务场景
- 1.1、财务和会计
- 1.2、金融交易
- 1.3、科学和工程计算
- 1.4、销售和零售
- 1.5、数据分析和报告
- 二、保留2位小数
- 2.1、Round方法处理
- 2.2、ToString方法处理
- 三、decimal和double的区别
- 3.1、精度
- 3.2、误差
- 3.3、存储空间
- 四、decimal和double应用场景

一、业务场景
有很多业务场景在处理数值时需要保留小数点。
- 以下是一些常见的例子:
1.1、财务和会计
在财务和会计领域,精确的小数点是非常重要的。比如计算利润、损益、税务和利率等,需要保留多位小数点以确保准确性。
1.2、金融交易
在金融交易中,涉及到金额、利率、汇率等数据,需要保留小数点以确保计算结果的精确性。
1.3、科学和工程计算
在科学和工程领域,需要进行精确的计算和测量。例如,物理实验、数值模拟和工程设计中需要保留小数点来表示测量值、计算结果和模型参数。
1.4、销售和零售
在销售和零售业务中,价格计算通常需要保留小数点。例如,销售商品时,需要计算价格、税费、折扣等。
1.5、数据分析和报告
在数据分析和报告中,保留小数点可以提供更精确的结果。例如,计算百分比、平均值、标准差等时需要保留小数点。
这只是一些业务场景的例子,保留小数点的需求是广泛的,因为准确性对于这些领域非常重要。
二、保留2位小数
2.1、Round方法处理
在C#中,可以使用Math.Round方法来保留指定小数位数。要保留两位小数,可以传递第二个参数作为小数位数。
- 以下是一个示例:
double number = 3.14159;
double roundedNumber = Math.Round(number, 2);Console.WriteLine(roundedNumber); // 输出 3.14
以上方法,对于超过3位小数来说,保留2位小数是没问题的,但是如果是3.10,那么会自动显示位3.1,省略了0的值,如果是3.00,那么直接就是3。
这样在某些场景下就不统一。
在上面的示例中,
number被舍入为两位小数,并存储在roundedNumber变量中。
最后,我们将roundedNumber打印到控制台上,结果为3.14。
2.2、ToString方法处理
如果需要在C#中使用Math.Round方法来保持2位小数,即使是整数,可以进行一些额外的处理。
- 以下是一种实现方式:
double number = 3;
double roundedNumber = Math.Round(number, 2);
string formattedNumber = roundedNumber.ToString("0.00");Console.WriteLine(formattedNumber); // 输出 "3.00"
在上面的示例中,我们首先使用
Math.Round方法将整数number保留为2位小数,并将结果存储在roundedNumber变量中。
然后,我们使用ToString方法将roundedNumber转换为字符串,并使用"0.00"格式化字符串来保持2位小数。
最后,将格式化后的字符串打印到控制台上,结果为"3.00"。这种方式可以确保整数也被保留为2位小数。
三、decimal和double的区别
decimal和double是在C#中用于表示和处理数值的两种不同数据类型。
- 主要区别如下:
3.1、精度
decimal是用于高精度计算的数据类型,它能够表示较大范围内的小数,并具有较长的有效数字位数(28-29位)。而double则是双精度浮点类型,它具有较大的取值范围,但有效数字位数相对较少(15-16位)。
3.2、误差
由于浮点数的特性,使用double进行计算时可能会存在舍入误差或精度丢失的问题。而decimal类型的计算是通过基于十进制的固定点算术进行的,相对更加精确,可以避免舍入误差。
3.3、存储空间
decimal占用的存储空间比double更大,因为它需要存储更多的有效数字和小数位数。通常情况下,decimal占用16个字节,而double占用8个字节。
根据具体业务需求,选择适当的数据类型非常重要。
如果需要进行货币计算、精确度要求较高的金融计算或其他需要确保精度的场景,推荐使用decimal类型。
而对于科学计算、较大范围的数值计算或精确度要求相对较低的场景,double类型通常更为适合。
四、decimal和double应用场景
decimal的应用场景:
- 金融计算:货币、利率、税务和会计计算需要高精度和准确性,
decimal在这些场景中很常见。 - 商业应用:例如订单金额、价格计算、库存数量等需要保持准确而精确的计算。
- 费率计算:涉及到分摊、比例和系数的计算,通常需要使用
decimal来确保精度不丢失。
double的应用场景:
- 科学和工程计算:
double常用于模拟物理过程、计算机图形、三维渲染等需要较大范围和较高计算性能的领域。 - 物理学和工程学领域:例如测量结果、传感器数据和物理模型等,通常使用
double来表示和处理实际测量值。 - 运算速度较为重要的计算:由于
double是CPU原生支持的浮点数格式,它的计算速度通常比decimal更快。
需要根据具体情况权衡使用哪种数据类型。
如果对精确度要求很高或涉及货币、金融等计算,应使用decimal。
如果涉及科学计算、物理模型或需要更高的计算性能,则可以使用double。
在选择数据类型时,还要考虑计算效率和内存占用的平衡。
相关文章:
【小数点】C#使用Math.Round方法保留指定小数点位数,并且整数也同样保持统一的2位
2023年,第38周。给自己一个目标,然后坚持总会有收货,不信你试试! 在实际开发项目中,特别是涉及金额之类的字段,一般都会用到小数,有些是保留1、2、3小数点。 本篇文章主要简单讲讲,如…...
Android多种方法获取系统属性
这里使用获取rga版本为例 1,使用sh脚本方法 sh的编写 echo $(getprop vendor.rga_api.version) 其中,vendor.rga_api.version是关键字 相关方法也有两种,一种是从sh脚本读取流,一种是指令很少的,直接读取字符串化…...
密码学【一】
前言 在区块链的整个体系中大量使用了密码学算法,比如用于 PoW 的哈希算法,用于完整性验证的 Merkle Tree,用于交易签名与验证的数字签名算法,用于隐私保护的零知识证明等等。 可以说密码学是保证区块链安全的基石,而区…...
企业如何选择舆情优化处置公司?
随着互联网的发展成熟,网络上的信息量已经非常之巨大,网络上的海量信息有对企业有利的,其实也有一些企业经营不利的,让不利的信息下沉,让有利的信息排上搜索首页,这就是舆情优化的简单表述。 对于大中型企业…...
HBASE知识点
HBASE是什么? 高可靠、高性能、面向列、可伸缩、实时读写的分布式数据库。利用HDFS作为其文件存储系统,利用MapReduce来处理HBase中的海量数据。利用Zookeeper作为其分布式协同服务。用于存储非结构化和半结构化的松散数据。 HBase数据模型 RowKey: 唯…...
Python新手入门
文章目录 概要python代码运行结果小结 概要 以下内容为python各种输出语句的语法! python代码 # 标准化输出 print("这是标准化输出!")# 格式化输出 print("这是第1种%s"%"格式化输出!") print("这是第…...
vite + react + typescript + uni-app + node 开发一个生态系统
简介 使用 vite react typescript uni-app node 来开发一个简易的生态系统案例,包含 APP,H5,微信小程序,控制台,服务端 开发 admin 技术栈:vite react typescript初始化控制台项目选择自定义预设…...
python pdf文件转图片
在Python中,有很多的第三方库可以用于PDF文件的转换,比如PyPDF2和pdf2image。 其中PyPDF2可以从PDF文件中提取每一页并将其保存为图像文件,需要安装Pillow库。 pdf2image则直接将PDF文件转换为PNG或JPEG图像文件,可以使用ImageM…...
牛客: BM7 链表中环的入口结点
牛客: BM7 链表中环的入口结点 文章目录 牛客: BM7 链表中环的入口结点题目描述题解思路题解代码 题目描述 题解思路 用一个哈希表存储链表节点,遍历链表,将节点加入哈希表,如果该节点在哈希表中出现过,意味着该节点是入口节点 题解代码 package mainfunc EntryNodeOfLoop(p…...
SpringMVC系列(七)之自定义注解
目录 一. Java注解简介 1.1 Java注解分类 1.2 JDK基本注解 Override Deprecated SuppressWarnings 1.3 JDK元注解 从 Java 7 开始,额外添加了 3 个注解: 1.4 自定义注解 如何自定义注解? 二. 自定义注解示例 枚举类: 示例一&…...
MongoDB的搭建 和crud操作
MongoDB docker 下载 docker run --restartalways -d --name mongo -v /docker/mongodb/data:/data/db -p 27017:27017 mongo:4.0.6使用navcat工具使用MongoDB Crud操作 jar包 <dependency><groupId>org.projectlombok</groupId><artifactId>lom…...
软件设计师考试学习1
前言 计算机组成原理及体系结构 数据的表示 进制的转换 原码反码补码移码 最高位是符号位,负数符号位为1 反码补码正数和原码一样,负数有区别 反码符号位不动,其他位置取反 补码在反码基础上加1 移码是将补码的符号为取反 在原码和反码中…...
【云计算】虚拟私有云 VPC
虚拟私有云 VPC 1.前言1.1 基本介绍1.2 VPC 的作用1.3 VPC 的适用人群 2.VPC 基本概念2.1 VPC 相关基本概念2.2 其他相关基本概念 3.VPC 通信场景3.1 VPC 内部互通3.2 VPC 间互通3.2.1 对等连接3.2.2 Transit Gateway 或者云联网 3.3 访问 Internet3.3.1 Internet 网关3.3.2 NA…...
@EventListener 监听事件 ,在同一个虚拟机中如何保证顺序执行
文章目录 前言EventListener 监听事件 ,在同一个虚拟机中如何保证顺序执行1. 设计原理2. 具体编码2.1. 编码事件监听器2.2. 制作一个生成序号方法2.3. 制作测试代码2.4. 测试结果 前言 如果您觉得有用的话,记得给博主点个赞,评论,…...
数据结构入门 — 树的概念与结构
本文属于数据结构专栏文章,适合数据结构入门者学习,涵盖数据结构基础的知识和内容体系,文章在介绍数据结构时会配合上动图演示,方便初学者在学习数据结构时理解和学习,了解数据结构系列专栏点击下方链接。 博客主页&am…...
linux驱动开发day6--(epoll实现IO多路复用、信号驱动IO、设备树以及节点和属性解析相关API使用)
一、IO多路复用--epoll实现 1.核心: 红黑树、一张表以及三个接口、 2.实现过程及API 1)创建epoll句柄/创建红黑树根节点 int epfdepoll_create(int size--无意义,>0即可)----------成功:返回根节点对应文件描述符…...
9月15日作业
Qt代码 #include "mywnd.h"//构造函数的定义 mywnd::mywnd(QWidget *parent): QWidget(parent) //显性调用父类的有参构造完成对子类从父类继承下来成员的初始化工作 {//窗口设置this->resize(QSize(500, 433));this->setWindowTitle("Widget&quo…...
关于Java多线程的那些事
多线程 多线程1. 关于多线程的理解1.1 进程和线程1.2 并行和并发1.3 线程调度 2. 创建多线程的方式创建线程有哪几种方式?2.1 通过继承Thread类来创建并启动线程的步骤如下:2.2 通过实现Runnable接口来创建并启动线程的步骤如下:2.3 通过实现…...
信息化项目验收的依据、内容和验收测评报告
随着信息系统业务覆盖率的提高和深度整合创新的逐步提高,信息系统运行阶段的复杂性和资源比例逐渐增加。一方面,信息已成为业务创新、技术应用和运营服务的综合体,而不仅仅是技术平台建设。另一方面,信息采购是技术平台建设。另一…...
解决IntelliJ IDEA执行maven打包,执行java -jar命令提示jar中没有主清单属性
问题场景 IDEA执行mvn clean package -DskipTesttrue命令或者借助工具的Maven菜单进行打包操作,然后执行java -jar app.jar命令后,提示jar中没有主清单属性 D:\WorkSpace\demo\target>java -jar demo-SNAPSHOT.jar demo-SNAPSHOT.jar中没有主清单属性…...
大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...
多模态图像修复系统:基于深度学习的图片修复实现
多模态图像修复系统:基于深度学习的图片修复实现 1. 系统概述 本系统使用多模态大模型(Stable Diffusion Inpainting)实现图像修复功能,结合文本描述和图片输入,对指定区域进行内容修复。系统包含完整的数据处理、模型训练、推理部署流程。 import torch import numpy …...
Web后端基础(基础知识)
BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端。 优点:维护方便缺点:体验一般 CS架构:Client/Server,客户端/服务器架构模式。需要单独…...
【p2p、分布式,区块链笔记 MESH】Bluetooth蓝牙通信 BLE Mesh协议的拓扑结构 定向转发机制
目录 节点的功能承载层(GATT/Adv)局限性: 拓扑关系定向转发机制定向转发意义 CG 节点的功能 节点的功能由节点支持的特性和功能决定。所有节点都能够发送和接收网格消息。节点还可以选择支持一个或多个附加功能,如 Configuration …...
