首页 > 编程语言 >C# double decimal 四舍五入

C# double decimal 四舍五入

时间:2023-11-27 21:45:55浏览次数:44  
标签:2.35 四舍五入 Console C# double WriteLine Round Math 2.345

传送门

using System;
using System.Collections.Generic;
using System.Linq;

public class Program
{
  public static void Main()
  {
    // 先看看double类型 通过Math.Round取两位小数得到什么
    Console.WriteLine( Math.Round(2.345d, 2));    //2.35
    // 再看看decimal类型通过Math.Round取两位小数得到什么
    Console.WriteLine( Math.Round(2.345m, 2));    //2.34
	
    // 对decimal类型,采用了银行家舍入算法:四舍六入五考虑,五后非空就进一,五后为空看奇偶,五前为偶应舍去,五前为奇要进一
    Console.WriteLine( Math.Round(2.3451m, 2));    //2.35 五后非空就进一
    Console.WriteLine( Math.Round(2.345m, 2));     //2.34 五后为空看奇偶,五前为偶应舍去
    Console.WriteLine( Math.Round(2.335m, 2));     //2.34 五前为奇要进一
	
    // 而对于double类型,没那么多讲究,直接满五进一
    Console.WriteLine( Math.Round(2.3451d, 2));    //2.35
    Console.WriteLine( Math.Round(2.345d, 2));     //2.35
    Console.WriteLine( Math.Round(2.335d, 2));     //2.34
    Console.WriteLine( Math.Round(2.334d, 2));     //2.33
	
    // 再来看一个容易疏忽的格式化问题,不管是double还是decimal类型,ToString("0.00")都会做四舍五入
    Console.WriteLine( 2.345d.ToString("0.00"));    //2.35
    Console.WriteLine( 2.345m.ToString("0.00"));    //2.35

    // 对于decimal类型
    Console.WriteLine( Math.Round(2.345m, 2, MidpointRounding.AwayFromZero));    //2.35
    Console.WriteLine( Math.Round(2.345m, 2, MidpointRounding.ToEven));          //2.34
    Console.WriteLine( Math.Round(2.375m, 2, MidpointRounding.AwayFromZero));    //2.38
    Console.WriteLine( Math.Round(2.375m, 2, MidpointRounding.ToEven));          //2.38
	
    // 不让四舍五入,而切掉后面的小数位,
    var pre = 1.4665m;
    var cut = pre - (pre % 0.01M);
    Console.WriteLine(cut.ToString("0.00"));          //1.46
    cut = pre - (pre % 0.001M);
    Console.WriteLine(cut.ToString("0.000"));         //1.466
  }
}

标签:2.35,四舍五入,Console,C#,double,WriteLine,Round,Math,2.345
From: https://www.cnblogs.com/RocCnBlog/p/17860530.html

相关文章

  • 【题解】CF1550E Stringforces
    标签:DP\(B^+\)阅读须知:本题解较为详细地讲述的该题解法的思路和来龙去脉,但篇幅较长,请耐心阅读。Step1从题面获取信息我们考虑,因为最大值最小,所以我们首先想到二分答案。然后我们又看到\(k\leq17\)这个限制,所以会想到可能是关于一个\(2^k\)之类的复杂度。以上就是我......
  • Android Compose 使用Pager (with TabRow)
    Pager基本内容看官方吧:AndroidCompose中的分页器不同页显示不同内容错误示范@ComposableHorizontalPager(state=pagerState,modifier.fillMaxHeight(),beyondBoundsPageCount=2,verticalAlignment=Alignment.Top){if(pagerState.currentPage==0){//使......
  • LeetCode-Java:27.移除元素
    题目给你一个数组nums和一个值val,你需要原地移除所有数值等于val的元素,并返回移除后数组的新长度。不要使用额外的数组空间,你必须仅使用O(1)额外空间并原地修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。说明:为什么返回数值是整数......
  • pycharm贴心大tips
    一、自定义文件头模版【1】打开settingsFile-->Settings【2】PythonScriptsEditor-->FileandCodeTemplates-->PythonScript【3】参数说明${PROJECT_NAME}-当前Project名称;${NAME}-在创建文件的对话框中指定的文件名;${USER}-当前用户名;......
  • pycharm常用快捷键大全
    常用快捷键大全【1】基本编辑快捷键Ctrl+Space:基本的代码完成(类、方法、属性)Ctrl+Alt+Space:快速导入任意类Ctrl+Shift+Enter:语句完成Ctrl+P:参数信息(在方法中调用参数)Ctrl+Q:快速查看文档F1:外部文档Shift+F1:外部文档,进入web文档主页Ctrl+......
  • LeetCode-Java:80.删除有序数组中的重复项 II
    题目给你一个有序数组nums,请你原地删除重复出现的元素,使得出现次数超过两次的元素只出现两次,返回删除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用O(1)额外空间的条件下完成。说明:为什么返回数值是整数,但输出的答案是数组呢?请注意,输入......
  • LeetCode-Java:26.删除有序数组的重复项
    题目给你一个非严格递增排列的数组nums,请你原地删除重复出现的元素,使每个元素只出现一次,返回删除后数组的新长度。元素的相对顺序应该保持一致。然后返回nums中唯一元素的个数。考虑nums的唯一元素的数量为k,你需要做以下事情确保你的题解可以被通过:更改数组......
  • offline RL | BCQ:学习 offline dataset 的 π(a|s),直接使用 (s, π(s)) 作为 Q learni
    题目:Off-PolicyDeepReinforcementLearningwithoutExploration,ICLR2019pdf版本:https://arxiv.org/pdf/1812.02900.pdfhtml版本:https://ar5iv.labs.arxiv.org/html/1812.02900GitHub:https://github.com/sfujim/BCQ参考博客:https://zhuanlan.zhihu.com/p/493039753,......
  • [XVI Open Cup GP of China] A. Graph Drawing
    那确实是神仙题,阅读jiangly代码遂取之。简要题意给定一个点双联通的平面图,保证每个点的度数不超过\(4\);具体地对于每个面将会按照逆时针顺序给出上面的顶点。现在要求把它画在无限大的网格上,要求边都平行于坐标轴,且彼此除了两端点外不接触。由于可能不能画出来,允许边进行任意......
  • BUU get_started_3dsctf_2016
    先checksec一下32位程序,没开PIE,再观察一下主函数gets函数有可能是栈溢出,再观察一下后门函数方法一:考虑栈溢出后直接跳转到if判断后面的语句,进而跳过if条件判断frompwnimport*#p=process('/home/miyu/Desktop/PWN/111/get_started_3dsctf_2016')#context.log_level......