toFixed是'Don’不要做任何事
toFixed Isn't Doing Anything
我在自学JavaScript,遇到了toFixed()的问题。我正在使用摊销计算器;并且,其中一个步骤返回一个包含大量小数位数的数字。我正试图把它减少到小数点后4位。请注意,示例代码中有很多解释性的HTML。它只是为了让我能够完成等式的各个步骤。此外,当我在很长的数字上加一时,它会在科学记数法的末尾加上数字一。
var paymentamount;
var principal=250000;
var interestrate = 4.5;
var annualrate = interestrate/12;
var numberofpayments = 360;
document.write("This is the annuitized interest rate: "+ annualrate +"%");
document.write("<h3> Now we add 1 to the annualized interest rate</h3>");
var RplusOne = annualrate + 1;
document.write("<p> This is One Added to R: " + RplusOne + "%");
document.write("<h3>Next RplusOne is Raised to the power of N </h3>");
var RRaised = (Math.pow(RplusOne, numberofpayments)).toFixed(4);
document.write("<p>This gives us the following very long number, even thought it shouldn't: " + RRaised);
document.write("<h3>Now we add one to the very long number </h3>");
var RplusOne = RRaised + 1;
document.write("<p>Now we've added one: " + RplusOne);
来自MDN的文档:
如果number大于1e+21,此方法只需调用number.protype.toString()并返回一个指数表示的字符串。
问题是,你使用的是4.5
而不是0.045
作为利率,所以这样做:
Math.pow(4.5 / 12 + 1, 360)
给你一个巨大的数字(确切地说是6.151362770461608e+49
或6.15 * 10^49
)。把你的利率改成0.045
,你就会如愿以偿。
至于var RplusOne = RRaised + 1
行,这里的问题是RRaised
是一个字符串,因为toFixed
。我只会在你展示东西的时候调用toFixed
,而不是在其他任何时候;这样做的主要原因是为了避免后续计算中的舍入错误,但还有一个额外的好处,即变量仍然是数字,而不是字符串。
相关文章:
- 元素在我的代码中不会.fadeTo.Don'I don’我不知道;s错误的JavaScript、JQuery、H
- Don'不允许将焦点集中在自动完成的选择上
- javascript如果图像不存在don't加载它
- append元素don'不要在提交时出现
- AngularJS指令部分应用的函数don'不起作用
- Don'我不明白为什么我的setInterval+jQuery;不起作用
- 我没有'I don’我不理解for在循环中的用途
- jQuery 1.7.2:.on()在一个页面上工作;Don’别再干别的了
- AngularJs|Don'在成功加载所有指令htmls之前,不显示页面
- Codeacademy Javascript..好的!/输出正确,但codeacademy没有;I don’我不喜欢
- Don't工作警报代码jQuery
- 如何实施“;Don'不要再给我看了”;在GWT中
- AngularJS routeprovider赢得'Don’我什么都不做
- Mediawiki皮肤创建-Javascript don'Don’t get load
- Dropit下拉列表没有'Don’不要躲在老鼠屋
- 链接don'由于Javascript悬停效果,无法在移动设备上工作
- Jquery live()绑定没有'I don’我对某些元素不感兴趣
- Ng点击don´不起作用
- Office加载项don't与“;asp:”;
- toFixed是'Don’不要做任何事