四舍五入

Math.Round到底是"四舍五入"还是"五舍六入"

流过昼夜 提交于 2020-01-08 20:34:57
本文转载自: https://www.cnblogs.com/bookworm/archive/2006/08/03/466866.html 作者:bookworm 转载请注明该声明。 环境VS2005,VS2003没有测试。 Math .Round (Decimal, Int32) 将小数值舍入到指定精度。 由 .NET Compact Framework 支持。 Math.Round (Double, Int32) 将双精度浮点值舍入到指定精度。 由 .NET Compact Framework 支持。 msdn并没有详细的说明清楚,给了一个例子; Math.Round(3.44, 1); //Returns 3.4. Math.Round(3.45, 1); //Returns 3.4. Math.Round(3.46, 1); //Returns 3.5. 依照他的例子得到的是"五舍六入",我改变了一下数字得到的结果将完全改变。 Math.Round(3.445, 1); //Returns 3.4. Math.Round(3.455, 1); //Returns 3.5. Math.Round(3.465, 1); //Returns 3.5. Math.Round(3.45 0 , 1); //Returns 3.4.(补0是无效的) Math.Round(3.4452

多项式A除以B

筅森魡賤 提交于 2020-01-08 09:26:21
这个问题我是在PAT大区赛题里遇见的。题目如下: 多项式A除以B(25 分) 这仍然是一道关于A/B的题,只不过A和B都换成了多项式。你需要计算两个多项式相除的商Q和余R,其中R的阶数必须小于B的阶数。 输入格式: 输入分两行,每行给出一个非零多项式,先给出A,再给出B。每行的格式如下: N e[1] c[1] ... e[N] c[N] 其中 N 是该多项式非零项的个数, e[i] 是第 i 个非零项的指数, c[i] 是第 i 个非零项的系数。各项按照指数递减的顺序给出,保证所有指数是各不相同的非负整数,所有系数是非零整数,所有整数在整型范围内。 输出格式: 分两行先后输出商和余,输出格式与输入格式相同,输出的系数保留小数点后1位。同行数字间以1个空格分隔,行首尾不得有多余空格。注意:零多项式是一个特殊多项式,对应输出为 0 0 0.0 。 但非零多项式不能输出零系数(包括舍入后为0.0)的项。在样例中,余多项式其实有常数项 -1/27 ,但因其舍入后为0.0,故不输出 。 输入样例: 4 4 1 2 -3 1 -1 0 -1 3 2 3 1 -2 0 1 输出样例: 3 2 0.3 1 0.2 0 -1.0 1 1 -3.1题目的意思很明确,就是要求 anxn+an-1xn-1+an-2xn-2+。。。+a1x1+a0x0 除以amxm+am-1xm-1+am-2xm-2+。

Math对象相关

允我心安 提交于 2020-01-07 11:54:02
Math.random() 返回大于等于0,小于1之间的数 [0,1) //0.3050501310540108 Math.floor(2.6) 向下取整 //2 Math.ceil(2.6) 向上取整 //3 Math.round() 四舍五入取整 Math.round()参数是正数,正常四舍五入 Math.round(2.6) //3 Math.round(2.4) //2 Math.round(2.5) //2.6 Math.round()参数是负数,并且小数部分恰好等于0.5的情况需要注意,需要多看0.5后边一位 Math.round(-2.5) //-2 Math.round(-2.51) //-3 Math.round(-2.4) //-2 来源: https://www.cnblogs.com/qq254980080/p/12159545.html

如何将十进制值四舍五入到小数点后两位(用于在页面上输出)

坚强是说给别人听的谎言 提交于 2020-01-06 17:03:36
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 当当前使用 .ToString() 显示小数的值时,准确地喜欢15个小数位,并且由于我使用它来表示美元和美分,因此我只希望输出为2个小数位。 我是否为此使用 .ToString() 的变体? #1楼 这些都不符合我的要求,强制 2 dp 并向上舍入为 0.005 -> 0.01 强制2 dp需要将精度提高2 dp,以确保我们至少有2 dp 然后四舍五入以确保我们不超过2 dp Math.Round(exactResult * 1.00m, 2, MidpointRounding.AwayFromZero) 6.665m.ToString() -> "6.67" 6.6m.ToString() -> "6.60" #2楼 decimalVar.ToString ("#.##"); // returns "" when decimalVar == 0 要么 decimalVar.ToString ("0.##"); // returns "0" when decimalVar == 0 #3楼 如果只需要显示此字符,则使用string.Format String.Format("{0:0.00}", 123.4567m); // "123.46" http://www.csharp-examples.net

[小技巧]你真的了解C#中的Math.Round么?

爷,独闯天下 提交于 2020-01-06 13:20:27
原文: [小技巧]你真的了解C#中的Math.Round么? 今天在某.NET Core 群中看到有人在问 Math.Round 的问题。其实这个问题之前有很多人遇到了,在此总结一下。 开发者为了实现小数点后 2 位的四舍五入,编写了如下代码, Copyvar num = Math.Round(12.125, 2); 代码非常的简单,开发者实际得到的结果是12.12, 这与其所预期的四舍五入结果12.13相悖。 其实产生这个结果的原因是由于 Math.Round 默认使用的并非是四舍五入的原则,而是四舍六入五成双的原则。 四舍六入五成双 # 所谓的四舍六入五成双,就是说当确定有效位数之后,有效位数的下一位如果小于等于4就舍去,如果大于等于6就进一,当有效位数的下一位是5的时候 如果5前为奇数,就舍五进一 如果5前为偶数,就舍五不进(0是偶数) 从统计学上将,四舍六入五成双比四舍五入要更精确,因为大量计算的情况下,四舍五入逢五进一,会导致结果偏向大数。 例如: 1.15+1.25+1.35+1.45 = 5.2 如果有效位数是小数点后一位,使用四舍五入原则得到的结果 1.2 + 1.3 + 1.4 + 1.5 = 5.4 而使用四舍六入五成双原则得到的结果是 1.2 + 1.2 + 1.4 + 1.4 = 5.2 由此可见四舍六入五成双原则得到的结果更为精确。 Math

Excel中函数公式(下)

假如想象 提交于 2019-12-30 09:29:42
文本处理函数 Trim函数: 作用:除了单词之间的单个空格之外,移除文本中的所有空格。 语法:TRIM(text),Text为必需项,为要移除空格的文本。 Concatenate函数: 作用:将两个或多个文本字符串联接为一个字符串。 语法:CONCATENATE(text1, [text2], …),至少包含一个项目,最多255个项目,最多支持8192个字符,项目可以是文本值、数字、或单元格引用。 说明:可以利用连接符&实现相同的功能。 结果如下: Replace函数: 作用: 将 特定位置的字符串替换为不同的文本字符 。 语法: REPLACE(old_text, start_num, num_chars, new_text) , old_text为需要替换的文本 , start_num替换字符的位置 ,num_chars利用new_text替换的字符数,new_text要替换old_text的新文本。 Left函数: 作用:从文本字符串的第一个字符开始返回指定个数的字符。 LEFT(text, [num_chars]) ,text包含要提取的字符,num_chars为指定要提取的自负数量,必须≥0,如果大于文本长度,则返回全部文本,如果省略则假定其值为1。 Right函数: 用法同Left,只是取数方向相反,从右侧开始取数。 Mid函数: 作用:从指定位置开始提取特定数目的字符

Java中Math对象的属性与方法

谁说胖子不能爱 提交于 2019-12-29 12:22:49
Math.sqrt() ——————>计算平方根 Math.cbrt()————————>计算立方根 Math.pow(a, b)——————————>计算a的b次方 Math.max( , )——————————>计算两个参数最大值 Math.min( , )————————————>计算两个参数最小值 Math.abs()————————>求绝对值 Math.ceil()——————————>向上取整。如12.1----13 Math.floor()——————————>向下取整。如12.9-----12 Math.random()——————————>得到一个0-1的随机数 Math.rint()——————————>四舍五入,返回double值。注意.5的时候会取偶数 异常的尴尬 Math.round————————————>四舍五入,float时返回int值,double时返回long值 来源: https://www.cnblogs.com/LixiaoFeng1650062546/p/11078897.html

java数字精确计算的解决方案---BigDecimal

我的梦境 提交于 2019-12-17 18:17:24
摘自:http://www.blogjava.net/ghyghost/archive/2008/06/16/208309.html 问题的提出: 编译运行下面这个程序会看到什么? 1 public class Test{ 2 public static void main(String args[]){ 3 System.out.println(0.05+0.01); 4 System.out.println(1.0-0.42); 5 System.out.println(4.015*100); 6 System.out.println(123.3/100); 7 } 8 }; 你没有看错!结果确实是 0.060000000000000005 0.5800000000000001 401.49999999999994 1.2329999999999999 Java中的简单浮点数类型float和double不能够进行运算 。不光是Java,在其它很多编程语言中也有这样的问题。在大多数情况下,计算的结果是准确的,但是多试几次(可以做一个循环)就可以试出类似上面的错误。现在终于理解为什么要有BCD码了。 这个问题相当严重,如果你有9.999999999999元,你的计算机是不会认为你可以购买10元的商品的。 在有的编程语言中提供了专门的货币类型来处理这种情况,但是Java没有

DOUBLE精度问题

断了今生、忘了曾经 提交于 2019-12-17 17:02:20
问题的提出: 如果我们编译运行下面这个程序会看到什么? public class Test{ public static void main(String args[]){ System.out.println(0.05+0.01); System.out.println(1.0-0.42); System.out.println(4.015*100); System.out.println(123.3/100); } }; 你没有看错!结果确实是 0.060000000000000005 0.5800000000000001 401.49999999999994 1.2329999999999999 Java中的简单浮点数类型float和double不能够进行运算。不光是Java,在其它很多编程语言中也有这样的问题。在大多数情况下,计算的结果是准确的,但是多试几次(可以做一个循环)就可以试出类似上面的错误。现在终于理解为什么要有BCD码了。 这个问题相当严重,如果你有9.999999999999元,你的计算机是不会认为你可以购买10元的商品的。 在有的编程语言中提供了专门的货币类型来处理这种情况,但是Java没有。现在让我们看看如何解决这个问题。 四舍五入 我们的第一个反应是做四舍五入。Math类中的round方法不能设置保留几位小数,我们只能象这样(保留两位): public

js保留两位小数方法总结

馋奶兔 提交于 2019-12-06 08:42:38
  最近在做结算系统,经常需要用到金额保留两位小数,刚开始我一直用的是Angular中的过滤器number |2,但是,这无法满足我的需求。问题是,当用户离开文本框时,我需要将用户输入的内容转换成保留两位小数的格式,我想了好久,没有想出来,然后我试了toFixed()方法,这个方法也不可行,因为它将数据转换成了字符串,传给后台是错的。然后,我就找了其他方法。现在刚好有空,所以就把相关保留两位小数的方法总结了一下,不同的场景用不同的方法,即用即取。 一、四舍五入相关 1、toFixed()方法 需注意,保留两位小数,将数值类型的数据改变成了字符串类型 1 // 1.四舍五入 2 var num =2.446242342; 3 num = num.toFixed(2); 4 console.log(num); //2.45 5 console.log(typeof num); // string 2、Math. floor (),不四舍五入 ,向下取整 注意,不改变数据类型 1 // 2.不四舍五入 向下取整 2 num = Math.floor(num * 100) / 100; 3 console.log(num); //2.44 4 console.log(typeof num); // number 3、字符串匹配 注意,先将数据转换为字符串,最后再转为数值类型 1 // 3