jjzjj

rounding

全部标签

.net - 为什么 Math.Round(2.5) 返回 2 而不是 3?

在C#中,Math.Round(2.5)的结果是2。应该是3,不是吗?为什么在C#中是2? 最佳答案 首先,无论如何这都不是C#错误-它会是.NET错误。C#是语言-它不决定Math.Round的实现方式。其次,不-如果你阅读thedocs,您会看到默认舍入是“四舍五入”(银行四舍五入):ReturnValueType:System.DoubleTheintegernearesta.Ifthefractionalcomponentofaishalfwaybetweentwointegers,oneofwhichisevenandth

c# - 转换为小数点后两位

您好,我是一名C#新手,有人会礼貌地告诉我如何将这段代码的值转换为double/四舍五入的小数。提前致谢DataTabledtValues=newDataTable("GetValues");strValueNumber=ValueNumber[0].ToString();dtGetValues=SQLMethods.GetValues(strValueNumber);total=0;for(inti=0;i 最佳答案 使用Math.RoundMath.Round(mydoublevalue,2);在你的代码中tbtotal2.Te

c# - Decimal.Round() 如何抛出 OverflowException

我在用Decimal.Round(decimald)MSDN说它可以抛出OverflowExceptionhttps://msdn.microsoft.com/en-us/library/k4e2bye2(v=vs.110).aspx我不确定这是怎么发生的。我尝试使用ilSpy查看实现并得到直到外部实现://decimal[SecurityCritical][MethodImpl(MethodImplOptions.InternalCall)]privatestaticexternvoidFCallRound(refdecimald,intdecimals);有人知道什么输入可以抛出这

c# - 为什么除法结果会因施法类型而异?

这是我不理解的部分代码:byteb1=(byte)(64/0.8f);//b1is79intb2=(int)(64/0.8f);//b2is79floatfl=(64/0.8f);//flis80为什么前两个计算相差一个?我应该如何执行此操作才能快速正确?编辑:我需要以字节为单位的结果 最佳答案 编辑:不完全正确,请参阅:Whydoesadivisionresultdifferbasedonthecasttype?(Followup)舍入问题:通过转换为byte/int,您将剪掉小数位。但是64/0.8不应该有任何小数位?错误:由于

c# - Math.Round 不保留尾随零

我需要将所有值四舍五入到小数点后两位。所以1.401应该四舍五入到1.40,但是Math.Round(value,2)四舍五入到1.4。如何强制尾随零? 最佳答案 1.4与1.40相同-您只是想以不同的方式显示它。调用ToString时使用格式字符串-如value.ToString("0.00") 关于c#-Math.Round不保留尾随零,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questi

C# - 将十进制转换为 int32

我有以下代码:inta=Convert.ToInt32(4.5m);intb=Convert.ToInt32(5.5m);Console.WriteLine(a);Console.WriteLine(b);这是输出:46为什么Convert.ToInt32将十进制值舍入到最接近的偶数? 最佳答案 Convert使用四舍五入或银行四舍五入:ThebehaviorofthismethodfollowsIEEEStandard754,section4.Thiskindofroundingissometimescalledroundingt

c# - 在 Paypal 中进行货币转换四舍五入的正确方法?

我正在构建一个与paypal集成的电子商务网站。我们采用多种货币,所以我想确保(出于会计原因)我正确地执行了货币换算的任何数学运算。在乘以货币转换*原始货币后,我总是在小数点后得到很多尾随数字。有没有标准的方法来做到这一点?我应该截断还是舍入?我是否需要多次舍入,以防舍入1/1000小数会影响舍入1/100小数?我应该做这样的事情吗:Math.Round(Math.Round(x,3),2)我一直无法找到有关如何完成此操作的有用信息(希望美国和欧洲相同)。 最佳答案 您应该使用Math.Round(x,2,MidpointRound

c# - decimal.Round 和 Math.Round 之间的区别

C#中的Math.Round和decimal.Round函数有什么区别? 最佳答案 没有区别。Math.Round(decimal)源代码:publicstaticDecimalRound(Decimald){returnDecimal.Round(d,0);}ReferenceSource.NETFramework编辑:为了澄清,decimal.cs类的源代码:publicstaticDecimalRound(Decimald){returnRound(d,0);} 关于c#-deci

c# - 为什么将 DateTime 格式化为字符串会截断而不是舍入毫秒?

当Double被格式化为字符串舍入时。例如Console.WriteLine(12345.6.ToString("F0"));输出12346However,whenaDateTimeisformattedasastringtruncationisused.E.g.varci=CultureInfo.InvariantCulture;vardateTime=DateTime.Parse("2011-09-14T15:18:42.999",ci);Console.WriteLine(dateTime.ToString("o",ci));Console.WriteLine(dateTime.

c# - 在 Delphi 中,Math.Round() 与 MidpointRounding.AwayFromZero 的等效项是什么?

我如何在Delphi中使用类似Math.Round和MidpointRounding.AwayFromZero的c#?等同于:doubled=2.125;Console.WriteLine(Math.Round(d,2,MidpointRounding.AwayFromZero));输出:2.13在德尔福? 最佳答案 我相信DelphiRTL的SimpleRoundTo函数本质上是这样做的,至少如果FPU舍入模式是“正确的”。请仔细阅读其文档和实现,然后确定它是否足以满足您的目的。但请注意,设置像这样的单个舍入操作的舍入模式是使用全