0

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ですか? そしてJavascriptリターン1 ですか?

4

2 に答える 2

1

更新:一般的に言えば、c# と javascript の Math.round は同じことを行っています。ただし、いくつかのニュアンスがあります。.net の詳細については、ここの Jon Skeet の回答にアクセスしてください。JavaScript の問題の一部については、 MDNとこのSO の回答で参照を見つけることができます。

先に進む前に、浮動小数点数のラウンド、フロア、シーリングに関する 3 つの操作について注意深く読むことをお勧めします。

ここで .net の poing を開始します

http://msdn.microsoft.com/en-us/library/system.math.round.aspx

そして1つは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が追加されます

また、学習の目的で、ここでバンカーの丸めについて読んでください。Why does Math.Round(2.5) return 2 instead of 3?

于 2013-05-25T05:08:25.590 に答える