我有一个代码将总值插入到文本框中,但是,执行的数学运算不会对数字进行舍入。根据下面的代码,我该如何实现?
function calculate(){
var mrc = document.getElementById('box1');
var days = document.getElementById('box2');
var total = document.getElementById('box3');
var reason = document.getElementById('box4');
var approver = document.getElementById('box5');
var approvalreason = document.getElementById('box6');
var custname = document.getElementById('box7');
var caseid = document.getElementById('box8');
var intermitent = document.getElementById('rb1');
var outage = document.getElementById('rb2');
if (outage.checked === true) {
if (days.value * 5 > mrc.value){
total.value = (mrc.value / 30) * days.value;
} else if (days.value > 14) {
total.value = (mrc.value / 30) * days.value;
} else {
total.value = days.value * 5;
}
} else if (intermitent.checked === true){
if (days.value * 3 > mrc.value)
{
total.value = (mrc.value / 30) * days.value;
} else if (days.value > 14) {
total.value = (mrc.value / 30) * days.value;
} else {
total.value = days.value * 3;
}
}
}
答案 0 :(得分:1)
两件事:
您通过使用隐式类型转换来玩火。 element.value
会返回string
,而不是number
,因此您应该使用parseInt()
或parseFloat()
将您的值转换为数字。例如,如果您的输入值为3,并且您element.value + 2
,则结果为32
。
其次,对于您的问题,Math.ceil()
将浮点数舍入到接近整数。
答案 1 :(得分:0)
使用round()方法将数字舍入为最接近的整数。 例: var a = Math.round(8.70); 回答a = 9;
答案 2 :(得分:0)
请尝试以下代码:
function toFixed(value, precision) {
var precision = precision || 0,
power = Math.pow(10, precision),
absValue = Math.abs(Math.round(value * power)),
result = (value < 0 ? '-' : '') + String(Math.floor(absValue / power));
if (precision > 0) {
var fraction = String(absValue % power),
padding = new Array(Math.max(precision - fraction.length, 0) + 1).join('0');
result += '.' + padding + fraction;
}
return result;
}
alert(toFixed(1.0000000,3));
以下是小提琴链接: Demo