【小数点】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中没有主清单属性…...
Python--文件和异常
目录 1、读取文件 1.1 读取文件的全部内容 1.2 相对路径和绝对路径 1.3 访问文件中的各行 1.4 使用文件中的内容 1.5 包含100万位的大型文件 1.6 圆周率中的生日 2、写入文件 2.1 写入一行 2.2 写入多行 3、异常 3.1 处理ZeroDivisionError 异常 3.2 使用try-exce…...
IDEFICS 简介: 最先进视觉语言模型的开源复现
我们很高兴发布 IDEFICS ( Image-aware Decoder Enhanced la Flamingo with Ininterleaved Cross-attention S ) 这一开放视觉语言模型。IDEFICS 基于 Flamingo,Flamingo 作为最先进的视觉语言模型,最初由 DeepMind 开发,但目前尚未公开发布…...
玩转Mysql系列 - 第20篇:异常捕获及处理详解
这是Mysql系列第20篇。 环境:mysql5.7.25,cmd命令中进行演示。 代码中被[]包含的表示可选,|符号分开的表示可选其一。 需求背景 我们在写存储过程的时候,可能会出现下列一些情况: 插入的数据违反唯一约束ÿ…...
一些工具类
1、字符串处理工具类 1.1、StrUtils package com.study.java8.util;/*** Classname:StrUtils* Description:字符串工具类* Date:2023/9/9 9:37* Author:jsz15*/import org.apache.commons.lang.text.StrBuilder; import org.apa…...
20230916后台面经整理
1.面对抢优惠券这样的高负载场景,你从架构、负载均衡等方面说一下你的设计? 答了参考Nginx进行负载均衡,然后在每台服务器怎么怎么弄(架构每一层怎么设计) 参考https://toutiao.io/posts/6z3uu2m/preview,h…...
如何通过快解析测试接口内外网?本地内网ip让外网访问连接
接口调试测试是网络技术员经常工作内容之一。如在公司内部api项目webserver测试,在公司内办公室个人电脑是正常用内网IP访问连接测试的,但在外网电脑需要远程测试时需要怎么测试呢?这里提供一种内网地址让外网访问的通用方法:快解…...
用c++实现五子棋小游戏
五子棋是一款经典小游戏,今天我们就用c实现简单的五子棋小游戏 目录 用到的算法: 思路分析 定义变量 开始写代码 完整代码 结果图: 用到的算法: 合法移动的判断:isValidMove 函数通过检查指定位置是否在棋盘范…...
Android 12.0 SystemUI下拉状态栏定制化之隐藏下拉通知栏布局功能实现(二)
1.前言 在12.0的系统定制化开发中,由于从12.0开始SystemUI下拉状态栏和11.0的变化比较大,所以可以说需要从新分析相关的SystemUI的 布局,然后做分析来实现不同的功能,今天就开始实现关于隐藏SystemUI下拉状态栏中的通知栏布局系列二,去掉下拉状态栏中 通知栏部分 白色的…...
通过finalshell快速在ubuntu上安装jdk1.8
这篇文章主要介绍一下怎么通过finalshell连接ubuntu,然后在ubuntu上安装jdk1.8,让不熟悉linux操作系统的童鞋也能快速地完成安装。 目录 一、准备一台虚拟机 二、安装finalshell远程连接工具 三、获取ubuntu虚拟机的ip地址 四、通过finalshell连接u…...
【Linux从入门到精通】多线程 | 线程互斥(互斥锁)
上篇文章我们对线程 | 线程介绍&线程控制介绍后,本篇文章将会对多线程中的线程互斥与互斥锁的概念进行详解。同时结合实际例子解释了可重入与不被重入函数、临界资源与临界区和原子性的概念。希望本篇文章会对你有所帮助。 文章目录 引入 一、重入与临界 1、1 可…...
阿里云建站后台建站/百度关键词查询工具免费
本文为《软件设计精要与模式》第四章 在企业运营理论体系中,有一种理论叫做运行价值链。它将企业的运营分为三个步骤:首先是发现价值,找到目标市场;然后是生产价值,将高质量的产品生产出 来;最后是保护价值…...
那些企业网站做的较好/网络营销咨询公司
我用两台LinuxLinuxA IP:192.168.10.101LinuxB IP:192.168.10.102首先我们在LinuxA上挂载光驱和安装FTP服务器然后安装FTP服务器(在同一台上,也就是LinuxA上)修改FTP的主配置文件(添加一句话anon…...
大专学历怎么自考/建站优化
钢板桩的拔除基坑回填后,要拔除钢板桩,以便重复使用。拔除钢板桩前,应仔细研究拔桩方法顺序和拔桩时间及土孔处理。否则,由于拔桩的振动影响,以及拔桩带土过多会引起地面沉降和移位,会给已施工的地下结构带…...
网站空间商盗取数据/网站互联网推广
上一篇刚刚完成了nagios的自动安装,这篇继续吧,想到前些天手动配置kickstart服务器过程比较繁琐,思路也不够清晰,还是把安装配置过程写进脚本非常方便,感觉是一劳永逸,降低后续工作的劳动量,而且…...
公司做外地网站/开鲁seo网站
vector<:vector>> allcontourpoint;//二层容器 std::vector<:point> Pointpoly; //一层容器 allcontourpoint.pop_back(); //弹出上一个, allcontourpoint.push_back(Pointpoly); //存储一个 vector>contours;//轮廓 allco…...
设计一个网页要多少钱/太原seo优化公司
https://wiki.videolan.org/AndroidCompile/...