C#用Math.Round和double.TryParse方法实现四舍五入

目录

一、涉及到的知识点

1.double.TryParse()方法

2.Math.Round(Decimal, Int32)   方法

3.comboBox1没有选项

二、示例

1.源码

2.生成


一、涉及到的知识点

1.double.TryParse()方法

         详见本文作者写的其他文章,

        C#用double.TryParse(String, Double)方法将字符串类型数字转换为数值类型-CSDN博客  https://wenchm.blog.csdn.net/article/details/135593983

2.Math.Round(Decimal, Int32)   方法

        将小数值舍入到指定数量的小数位,并将中点值舍入到最接近的偶数。

public static decimal Round (decimal d, int decimals);

参数
d
Decimal
要舍入的小数。

decimals
Int32
返回值中的小数位数。

返回
Decimal
最接近 d 的 decimals 位小数的数字。

例外
ArgumentOutOfRangeException
decimals 小于 0 或大于 28。

OverflowException
结果超出了 Decimal 的范围。

注解
参数的值 decimals 范围为 0 到 28。此方法使用 的默认舍入约定 MidpointRounding.ToEven。在舍入中点值时,舍入算法执行相等测试。

         Math.Round输出示例:

//示例
Console.WriteLine(Math.Round(3.44m, 1));
Console.WriteLine(Math.Round(3.45m, 1));
Console.WriteLine(Math.Round(3.46m, 1));
Console.WriteLine();

Console.WriteLine(Math.Round(4.34m, 1));
Console.WriteLine(Math.Round(4.35m, 1));
Console.WriteLine(Math.Round(4.36m, 1));

// The example displays the following output:
//       3.4
//       3.4
//       3.5
//
//       4.3
//       4.4
//       4.4

         由输出结果看,Math.Round的结果不是严格意义的四舍五入,比如Round(3.45,1)=3.4就没有按四舍五入操作,但Round(4.35,1)=4.4就按四舍五入操作了。这是Math.Round定义的规则。

        如果想要严格地执行四舍五入,就需要对Round方法进行重载。

3.comboBox1没有选项

         当没有选项时,comboBox1!.SelectedIndex == -1;

二、示例

1.源码

//用Math.Round和double.TryParse方法实现四舍五入
namespace _048
{
    public partial class Form1 : Form
    {
        private TextBox?textBox1;
        private TextBox? textBox2;
        private Label?label1;
        private Label? label2;
        private TextBox? textBox3;
        private ComboBox? comboBox1;
        private Button? button1;

        public Form1()
        {
            InitializeComponent();
            Load += Form1_Load;
        }
        private void Form1_Load(object?sender, EventArgs e)
        {
            // 
            // textBox1
            // 
            textBox1 = new TextBox
            {
                Location = new Point(12, 12),
                Name = "textBox1",
                Size = new Size(100, 23),
                TabIndex = 0
            };
            // 
            // textBox2
            //           
            textBox2 = new TextBox
            {
                Location = new Point(137, 12),
                Name = "textBox2",
                Size = new Size(100, 23),
                TabIndex = 1
            };
            // 
            // label1
            //          
            label1 = new Label
            {
                AutoSize = true,
                Location = new Point(116, 18),
                Name = "label1",
                Size = new Size(17, 17),
                TabIndex = 2,
                Text = "+"
            };
            // 
            // label2
            //          
            label2 = new Label
            {
                AutoSize = true,
                Location = new Point(12, 82),
                Name = "label2",
                Size = new Size(68, 17),
                TabIndex = 3,
                Text = "计算结果:"
            };
            // 
            // textBox3
            //          
            textBox3 = new TextBox
            {
                Location = new Point(137, 76),
                Name = "textBox3",
                Size = new Size(100, 23),
                TabIndex = 4
            };
            // 
            // comboBox1
            //           
            comboBox1 = new ComboBox
            {
                FormattingEnabled = true,
                Location = new Point(12, 47),
                Name = "comboBox1",
                Size = new Size(100, 25),
                TabIndex = 5,
                
        };
            comboBox1.Items.AddRange([
            "保留1位小数",
            "保留2位小数",
            "保留3位小数",
            "保留4位小数"]);
            // 
            // button1
            // 

            button1 = new Button
            {
                Location = new Point(162, 44),
                Name = "button1",
                Size = new Size(75, 23),
                TabIndex = 6,
                Text = "计算",
                UseVisualStyleBackColor = true
            };
            button1.Click += Button1_Click;
            // 
            // Form1
            // 
            AutoScaleDimensions = new SizeF(7F, 17F);
            AutoScaleMode = AutoScaleMode.Font;
            ClientSize = new Size(250, 107);
            Controls.Add(button1);
            Controls.Add(comboBox1);
            Controls.Add(textBox3);
            Controls.Add(label2);
            Controls.Add(label1);
            Controls.Add(textBox2);
            Controls.Add(textBox1);
            Name = "Form1";
            Text = "四舍五入";   
        }

        private void Button1_Click(object? sender, EventArgs e)
        {
            if(textBox1!.Text !=""&& textBox1!.Text != "")
            {
                if(comboBox1!.SelectedIndex != -1)
                {
                    if (double.TryParse(textBox1!.Text, out double temp1) &&
                            double.TryParse(textBox2!.Text, out double temp2))
                    {
                        textBox3!.Text = //得到四舍五入后的值
                            Math.Round(temp1 + temp2, comboBox1!.SelectedIndex + 1).ToString();
                    }
                    else
                    {
                        MessageBox.Show("输入数值不正确!", "提示!");
                    }
                }
                else
                    MessageBox.Show("请选择正确的小数点后位数", "提示!");
            }
            else
                MessageBox.Show("重新输入正确的数字!", "提示!");
        }
    }
}

2.生成

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/324581.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C++(1) —— 基础语法入门

目录 一、C初识 1.1 第一个C程序 1.2 注释 1.3 变量 1.4 常量 1.5 关键字 1.6 标识符命名规则 二、数据类型 2.1 整型 2.2 sizeof 关键字 2.3 实型(浮点型) 2.4 字符型 2.5 转义字符 2.6 字符串型 2.7 布尔类型 bool 2.8 数据的输入 三…

【EI会议征稿通知】第四届图像处理与智能控制国际学术会议(IPIC 2024)

第四届图像处理与智能控制国际学术会议(IPIC 2024) 2024 4th International Conference on Image Processing and Intelligent Control 2024年第四届图像处理与智能控制国际学术会议(IPIC 2024)将于2024年5月3日-5日在吉隆坡举…

Web server failed to start. Port 8080 was already in use. 端口被占用

Web server failed to start. Port 8080 was already in use. 端口被占用。 1、cmd回车打开命令窗口 查看端口号是否被占用 netstat -ano|findstr “8080” 2、查看进程号对应的进程名称 tasklist|findstr “12760” 3、直接杀死进程 taskkill /F /pid 12760或 taskkill /F …

Mysql中DATETIME字段设置自动更新

在MySQL里,我们可以设置默认时间值来让数据表记录当时数据表更新时间。 在创建表时设置。我们可以在创建表的时候,指定一个字段的默认值为当前时间CURRENT_TIMESTAMP 示例代码: CREATE TABLE test (id INT PRIMARY KEY AUTO_INCREMENT,crea…

yolov1:背景介绍与算法精讲

目录 一、背景介绍1.1 yolo发展历史1.2 作者介绍 二、算法精讲2.1 预测阶段2.2 训练阶段 三、论文细节 一、背景介绍 其实在写这篇博客的时候yolov1~yolov8的所有网络结构以及算法思想和源码都已经研究很久了,回过头继续读v1会发现有很多细节是自己没有留意的&#…

Windows10解决大小核调度问题

文章目录 1.开启高性能模式2.下载安装PowerSettingsExplorer3.修改配置生效的异类策略异类线程调度策略异类短时间线程调度策略 4.你的电源策略5.CPU展示 该教程是给笔记本电脑用的,经过我实践是成功的。 1.开启高性能模式 使用管理员模式的PowerShell输入下列指令 …

Mantle: A Programmable Metadata Load Balancer for the Ceph File System——论文泛读

SC 2015 Paper 元数据论文阅读汇总 问题 优化Ceph的元数据局部性和负载平衡。 现有方法 提高元数据服务性能的最常见技术是在专用的元数据服务器(MDS)节点之间平衡负载 [16, 25, 26, 21, 28]。常见的方法是鼓励独立增长并减少通信,使用诸…

HuiYong.Online 私有化博客系统

HuiYong.Online 私有化博客系统 一站式支持MarkDown、Drawio、XMind 免费、简单、强大... 用思维导图、流程图、写文章、做笔记、记录生活;搭建自己 / 组织 / 公司的知识储备系统;这里就是你所寻找的。 链接 官网:https://huiyong.onlineGithub:http…

【iOS】数据存储方式总结(持久化)沙盒结构

在iOS开发中,我们经常性地需要存储一些状态和数据,比如用户对于App的相关设置、需要在本地缓存的数据等等,本篇文章将介绍六个主要的数据存储方式 iOS中数据存储方式(数据持久化) 根据要存储的数据大小、存储数据以及…

基于Pytorch的身份证及其他证件检测矫正模型应用

前言 在做身份证和其他证件识别的时候,图片基本都不是摆正的状态,此时在进行OCR文字识别的提取文字信息的时候会出现很多误差,如何将证件摆正,再进行OCR文字识别就可以大大提高准确率。 准备工作 1、Python环境,在P…

【Docker】CentOS stream 上安装 Docker 环境详细指南

文章目录 1. 定义2. 优势3. 安装1)Linux 上安装(强烈推荐)2)Windows 和 MAC 上安装 4. 验证1)查看版本2)运行 Hello World 总结 Docker 是一种轻量级的容器化技术,提供了一种在不同环境中快速、…

Android Framework | AOSP源码下载及编译指南(基于Android13)

Android Framework | AOSP源码下载及编译指南(基于Android13) 引言 AOSP(Android Open Source Project)是Android操作系统的开源项目,通过下载和编译AOSP源码,您可以获得原始的Android系统,并进行定制和开发。本教程…

压缩编码之不同缩放参数对重建图像质量的影响的python实现——JPEG变换编码不同压缩率的模拟

原理 JPEG(Joint Photographic Experts Group)是一种常用的图像压缩标准,它通过采用离散余弦变换(DCT)和量化来实现图像的压缩。 离散余弦变换(DCT): JPEG首先将图像分割成8x8的块…

【Unity实战100例】Unity对Ini格式的配置文件管理和读写

目录 一.编写ini格式配置文件 二.读取解析ini文件 三.调用属性 INI 文件以文本形式存储,易于阅读和编辑。这种人可读的格式使得调整配置参数变得更加直观,不需要专门的工具。 INI 文件是一种轻量级的配置文件格式,不需要复杂的解析器或库。它的结构相对简单,适用于小到

LLM论文:ALCE (Enabling Large Language Models to Generate Text with Citations)

这是一篇RAG领域的文章,原文在这:https://aclanthology.org/2023.emnlp-main.398.pdf 时间[Submitted on 24 May 2023 (v1), last revised 31 Oct 2023 (this version, v2)]背景LLM在信息搜索、生成带引用的文本时存在幻觉问题,即事实准确性…

03 顺序表

目录 线性表顺序表练习 线性表(Linear list)是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表、链表、栈、队列、字符串。。。 线性表在逻辑上时线性结构,是连续的一条直线。但在物理结…

前端框架前置课Node.js学习(1) fs,path,模块化,CommonJS标准,ECMAScript标准,包

目录 什么是Node.js 定义 作用: 什么是前端工程化 Node.js为何能执行Js fs模块-读写文件 模块 语法: 1.加载fs模块对象 2.写入文件内容 3.读取文件内容 Path模块-路径处理 为什么要使用path模块 语法 URL中的端口号 http模块-创建Web服务 需求 步骤: 案例:浏…

Detection-friendly dehazing: object detection in real-world hazy scenes

Detection-friendly dehazing: object detection in real-world hazy scenes 摘要 提出了一种联合架构BAD-Net,将去雾模块和检测模块连接成一个端到端的方法。另外,设计了了两个分支结构,用注意力融合模块来充分结合有雾和去雾特征&#xf…

【python】11.文件和异常

文件和异常 实际开发中常常会遇到对数据进行持久化操作的场景,而实现数据持久化最直接简单的方式就是将数据保存到文件中。说到“文件”这个词,可能需要先科普一下关于文件系统的知识,但是这里我们并不浪费笔墨介绍这个概念,请大…

Python展示 RGB立方体的二维切面视图

代码实现 import numpy as np import matplotlib.pyplot as plt# 生成 24-bit 全彩 RGB 立方体 def generate_rgb_cube():# 初始化一个 256x256x256 的三维数组rgb_cube np.zeros((256, 256, 256, 3), dtypenp.uint8)# 填充立方体for r in range(256):for g in range(256):fo…