小数点后两位四舍五入-找不到正确的公式
Rounding two decimal places - not finding the right formula
我似乎找不到在代码中有两个小数点的正确公式。现在,当我点击关于计算的第一个选项时,它四舍五入到小数点后三位(小数点后3位并不意味着什么。但不管结果如何,它都应该四舍五进到小数点前2位)。这是我最后一次尝试:
$('#a_is_valid').one('click', function(){
if ($('#code_promo').val() == 'promocode')
{$('#gtotal').val($('#gtotal').val()-($('#gtotal').val()-
(($('#gtotal').val()*.75)))).fixed(2);
}
})
给定一个数字(或表示数字的字符串),为什么不这样做呢:
var number;
var output = (Math.round(number * 100) / 100).toFixed(2);
在你的情况下,看起来你想要:
$('#a_is_valid').one('click', function(){
if ($('#code_promo').val() == 'promocode')
{$('#gtotal').val((Math.round($('#gtotal').val() * 75) / 100).toFixed(2));
Math.round(足够合适)四舍五入到最接近的整数,所以你必须做一些魔术。乘以10^(你想要的小数位数)-在你的情况下,10^2或100,四舍五入,然后除以相同的数字。
在我专门为你做的例子中,你会注意到我乘以75:0.75*100。
使用函数可能最容易看到这一点
function roundToNPlaces(n, val) {
var multiplier = Math.pow(10, n);
return (Math.round(val * multiplier) / multiplier).toFixed(n);
}
然后你可以简单地设置你的gtotal如下:
$('#gtotal').val(roundToNPlaces(2, $('gtotal').val() * 0.75));
请参阅此FIDDLE。
参见:
- Math.round注意:此文档提供了一个类似于(但比)我给出的代码更复杂的实现。如果您将他们的整个
Decimal rounding
示例复制到您的代码中(在第一次需要使用它之前),那么您可以只使用Math.round10($('#gtotal').val() * .75, -2);
。看见http://jsfiddle.net/aW44n/1/ - toFixed
相关文章:
- 气质的“nestRemoting()”有时可以'找不到关系
- 错误405:向Java控制器(Ajax)发送JSON时找不到POST方法
- 找不到模块捆绑包
- for循环中的javascript if语句找不到==
- 为什么JavaScript可以'找不到给定的InnerHTML并返回Cannot set property
- 失败:等待Protractor与页面同步时出错:“”;在窗口上找不到角度”;
- Babel编译错误:找不到模块核心js/library/fn/get迭代器
- [Vue warn]:找不到元素
- ngRoute找不到模板
- 未能加载,因为找不到支持的源.当播放HTML5音频元素时
- 因果报应-找不到模块:错误:无法解析模块'scs'
- Angular 2:在本地.json文件上找不到文件
- module.js在运行iron节点时找不到模块
- 放大弹出生成“;找不到文件”;YouTube视频的错误
- 我发现了一些只在移动设备上可见的垃圾邮件链接,我可以'找不到包含此垃圾邮件链接的脚本的位置
- Web 地址虚拟目录会断开外部 JavaScript 链接,因此找不到文件
- Meteor.js可以'找不到语义:ui包
- 找不到容器:goog.Disposable.instances _在为javascript工具使用泄漏查找器时出错
- 错误:找不到模块'/lib/cli'
- 小数点后两位四舍五入-找不到正确的公式