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

news2024/9/24 18:09:07

目录

一、涉及到的知识点

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.生成

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

消息中间件之Kafka(一)

1.简介 高性能的消息中间件,在大数据的业务场景下性能比较好,kafka本身不维护消息位点,而是交由Consumer来维护,消息可以重复消费,并且内部使用了零拷贝技术,性能比较好 Broker持久化消息时采用了MMAP的技…

像操作本地文件一样操作linux文件 centos7环境下samba共享服务搭建详细教程

1.安装dnf yum -y install dnf 2.安装samba dnf install samba -y 3.配置 3.1创建并设置用户信息 #创建用户 useradd -M -s /sbin/nologin samba echo 123|passwd --stdin samba mkdir /home/samba chown -R samba:samba /home/samba smbpasswd -a samba smaba设置密码示…

nodejs下载安装

一、node下载安装 官网下载 官网 根据自己电脑系统选择合适的版本进行下载,我这里选择window 64 位 下载完点击安装 打开cmd查看安装 此处说明下:新版的Node.js已自带npm,安装Node.js时会一起安装,npm的作用就是对Node.js…

实现仿ChatGPT光标跟随效果

先看效果 实现效果 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>光标闪烁效果</title>…

使用 MinIO 和 PostgreSQL 简化数据事件

本教程将教您如何使用 Docker 和 Docker Compose 在 MinIO 和 PostgreSQL 之间设置和管理数据事件&#xff0c;也称为存储桶或对象事件。 您可能已经在利用 MinIO 事件与外部服务进行通信&#xff0c;现在您将通过使用 PostgreSQL 自动化和简化数据事件管理来增强数据处理能力…

机器人导纳控制实现框架

Safe, Stable and Intuitive Control for Physical Human-Robot Interaction - 知乎关于文章《Safe, Stable and Intuitive Control for Physical Human-Robot Interactio》的简记。 Safe, Stable and Intuitive Control for Physical Human-Robot Interaction目的根据力导数作…

设计一个网页爬虫

定义 User Case 和 约束 注意&#xff1a;没有一个面试官会阐述清楚问题&#xff0c;我们需要定义Use case和约束 Use cases 我们的作用域只是处理以下Use Case&#xff1a; Service 爬取一批 url 生成包含搜索词的单词到页面的反向索引给页面生成标题和片段– 标题和片段是…

ptrade 通过mysql的链接开发一个量化管理平台。

这里只写一下界面及想法。不进行代码的实现。因为对流程不是很熟 ###界面 数据库的链接&#xff1a; ptrade USER 可转债量化分析 PASSWORD 123456 MYSQL_HOST mysql.sqlpub.com MYSQL_PORT 3306 MYSQL_DB ptradedef get_mysql_conn():import pymysqltry:conn pym…

maven编译时依赖报错 Caused by: java.util.zip.ZipException: zip file is empty 错误。

出现这种报错时&#xff0c;可能是maven仓库下对应的依赖出现了问题&#xff0c;需要讲报错依赖位置的依赖进行删除&#xff0c;在编译的时候就会重新下载&#xff0c;就不会出现错误了。 rm -rf /Applications/software/env/repository/org/apache/orc/orc-core/1.9.1/

Yield Guild Games 宣布与区块链游戏中心 Iskra 建立战略合作伙伴关系

Yield Guild Games (YGG) 宣布将向 Iskra 引入其任务系统&#xff0c;Iskra 是一个 Web3 游戏中心和发布平台&#xff0c;拥有超过 400 万注册钱包和 10 万月度活跃用户 (MAU)。在 LINE、Kakao、Wemade 和 Netmarble 等公司的支持下&#xff0c;Iskra 将游戏玩家和游戏工作室聚…

验收测试的重要性:确保交付高质量产品

在软件开发生命周期中&#xff0c;验收测试扮演着至关重要的角色&#xff0c;它不仅是项目的最后一道关卡&#xff0c;更是确保交付高质量产品的关键步骤。本文将介绍验收测试的重要性&#xff0c;以及它在软件开发过程中的作用。 1. 确认功能符合需求 验收测试的首要任务是验证…

逆向思维,去重Cube计算优化新技巧

场景描述 在做数据汇总计算和统计分析时&#xff0c;最头疼的就是去重类指标计算&#xff08;比如用户数、商家数等&#xff09;&#xff0c;尤其还要带多种维度的下钻分析&#xff0c;由于其不可累加的特性&#xff0c;几乎每换一种统计维度组合&#xff0c;都得重新计算。数…

匿名发送短信

匿名发送短信 匿名发送短信啦&#xff01;不用程序猿&#xff0c;也能定制专属推送消息&#xff01;每日小惊喜&#xff01; 还可以领取课程资料&#xff01;软考中级软件设计师&#xff0c;高级信息系统项目管理师&#xff01; 先说在哪里 微信搜公众号&#xff1a;暮看云 微…

人工智能 | 自然语言处理的发展历程

github&#xff1a;https://github.com/MichaelBeechan CSDN&#xff1a;https://blog.csdn.net/u011344545 自然语言处理的发展 方向一&#xff1a;技术进步1. 基于规则的语法&#xff08;1950-1990&#xff09;2. 统计语言处理&#xff08;1990-2010&#xff09;3. 基于深度学…

ChatGPT正确打开方式与GPT-4.5的key最新获取方式

前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff1a;https://www.captainbed.cn/z ChatGPT体验地址 文章目录 前言4.5key价格泄漏ChatGPT4.0使用地址ChatGPT正确打开方式最新功能语音助手存档…

计算机网络-标准化工作及相关组织与性能指标(标准分类 标准化工作 RFC 速率 带宽 吞吐量 时延 时延带宽积 RTT 利用率)

文章目录 标准化工作及相关组织标准化工作标准分类RFC流程标准化的相关组织小结 性能指标速率带宽吞吐量时延发送时延传播时延排队时延与处理时延补充 高速链路 时延带宽积往返时间RTT利用率小结 标准化工作及相关组织 标准化工作 即需要统一标准&#xff0c;这样才能兼容 …

Linux 时间同步 - Chrony服务

Linux 时间同步 - Chrony服务 引言一、简单使用二、详解2.1 chrony.conf2.2 chronyd2.3 chronyc 引言 为什么需要时间同步? 其意义可参考秦朝统一度量衡&#xff0c;车同轨&#xff0c;书同文。核心就是方便协同工作。 Chrony能更精确、更快的同步时钟&#xff0c;传统ntp需要…

014集:python访问互联网:网络爬虫实例—python基础入门实例

以pycharm环境为例&#xff1a; 首先需要安装各种库(urllib&#xff1a;requests&#xff1a;Openssl-python等) python爬虫中需要用到的库&#xff0c;大致可分为&#xff1a;1、实现 HTTP 请求操作的请求库&#xff1b;2、从网页中提取信息的解析库&#xff1b;3、Python与…

代码随想录算法训练营day13|239.滑动窗口最大值、347.前K个高频元素

239. 滑动窗口最大值 347.前 K 个高频元素 239. 滑动窗口最大值 &#xff08;一刷至少需要理解思路&#xff09; 之前讲的都是栈的应用&#xff0c;这次该是队列的应用了。 本题算比较有难度的&#xff0c;需要自己去构造单调队列&#xff0c;建议先看视频来理解。 题目链接/文…

css3轮播图案例

轮播图案例 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title><style>…