c#和Javascript中Math.round()的值不同
different value for Math.round() in c# and Javascript
C#
homeModel.FinancialComplianceModelList.AnnualDebtService=20;
homeModel.FinancialComplianceModelList.AnnualLeaseExpense=50;
homeModel.FinancialComplianceModelList.PPR=100;
decimal DebtAndLeaseToPPRRatio = Convert.ToDecimal((homeModel.FinancialComplianceModelList.AnnualDebtService + homeModel.FinancialComplianceModelList.AnnualLeaseExpense) / homeModel.FinancialComplianceModelList.PPR);
我计算了上面公式的值。计算值为
0.35
我想要一个数字值。所以我使用math.round((
Int finalvalue=Convert.ToInt32( Math.Round(DebtAndLeaseToPPRRatio));
现在FinalValue is 0
//它是好的
Javascript
现在我在javascript
中使用了相同的公式和相同的值,以查看下面的代码
$("#DebtAndLeaseToPPRRatio").text(Math.round(((AnnualDebtService + AnnualLeaseExpense) / PPR).toFixed(1)) + "%");
但现在它的显示结果是1
。
当我使用相同的公式时,为什么c#显示为0
?而CCD_ 5是返回CCD_?
UPDATE:一般来说,c#和javascript中的Math.round也在做同样的事情。然而,有几个细微差别。有关.net的详细信息,请访问Jon Skeet的答案,对于一些javascript问题,您可以在MDN和这个SO答案上找到参考。
在你进一步讨论之前,我建议你仔细阅读关于浮点数的三个运算——圆形、底部和顶部。
这是.net 的起点
http://msdn.microsoft.com/en-us/library/system.math.round.aspx
一个用于javascript
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Math/round
如果您对以下数字0.1、0.5、07、0.9进行Math.round(x(的简单测试,您将在javascript和.net 中得到相同的结果
考虑到在一些浏览器中,javascript可以用大数字给你"时髦"的结果
检查这个答案在javascript中使用Math.round在的末尾添加了奇怪的0
另外,为了学习,请阅读关于银行家四舍五入的文章。为什么Math.Round(2.5(返回2而不是3?
我认为问题出在其他地方:
如果我们使用您在问题中提供的值:
homeModel.FinancialComplianceModelList.AnnualDebtService=20;
homeModel.FinancialComplianceModelList.AnnualLeaseExpense=50;
homeModel.FinancialComplianceModelList.PPR=100;
decimal DebtAndLeaseToPPRRatio =
Convert.ToDecimal((homeModel.FinancialComplianceModelList.AnnualDebtService +
homeModel.FinancialComplianceModelList.AnnualLeaseExpense)/
homeModel.FinancialComplianceModelList.PPR);
假设计算中至少有一个变量是十进制的DebtAndLeaseToPPRRatio
现在是0.7
(否则,如果计算int
s,则得到0
(。因为(20.0 + 50.0) / 100 = 0.7
,但是注意(20 + 50) / 100 = 0
。
不确定你从哪里得到0.35
。另外,Math.Round(0.35)
(C#(和Math.round(0.35)
(JavaScript(会得到0
。不同之处在于,当您执行Math.Round(0.5)
(C#(->0.0
时,其中Math.round(0.5)
(JavaScript(->1
。
我正在用两种语言(使用提供的值(测试您的代码,并且在每种情况下都得到1
。
- Javascript:Round Half偶数后2位
- 为什么Java和Javascript Math.round(-1.5)到-1
- Math.round MidPointRounding.AwayFromZero in javascript
- After Effects math.round Javascript script
- Javascript round up values
- Javascript round()、toFixed() 和 toPrecision() 是不正确的
- Javascript 避免 0.2 + 0.4 = 0.60000000000000001 而不是 Math.round
- Javascript math.round threshold
- Javascript: Round by 100
- JavaScript数学.round:不将对象四舍五入到十进制的1
- 为什么是数学?Round在javascript中比自定义构建函数慢
- javascript round problems
- c#和Javascript中Math.round()的值不同
- 数学上的非十进制数.天花板或数学.round在JavaScript中
- 数学.round在JavaScript中不起作用
- 使用javascript Round方法将值从1.035舍入为1.04
- javascript中的Round函数
- 如何使用math.round()纠正不准确的Javascript数学
- Javascript: Round Time UP最接近5分钟
- Multiply & Round JavaScript issue