Javascript 功能测试,四舍五入至小数点后一位,即使答案正确,也显示错误?
我的功能是输入华氏温度并输出到摄氏度的转换,或者输入摄氏温度并输出到华氏度的转换。我的测试要求我将所有结果四舍五入到第一个小数点,这一点我做得很正确。然而,我的测试表明不是这样,我使用“Jasmine”来测试代码。这是我得到的Javascript 功能测试,四舍五入至小数点后一位,即使答案正确,也显示错误?,javascript,function,math,decimal,rounding,Javascript,Function,Math,Decimal,Rounding,我的功能是输入华氏温度并输出到摄氏度的转换,或者输入摄氏温度并输出到华氏度的转换。我的测试要求我将所有结果四舍五入到第一个小数点,这一点我做得很正确。然而,我的测试表明不是这样,我使用“Jasmine”来测试代码。这是我得到的 const ftoc = function(fahr) { let input = fahr; if (typeof fahr === 'number'){ let result = (fahr - 32) * 5/9; if (Number.isInte
const ftoc = function(fahr) {
let input = fahr;
if (typeof fahr === 'number'){
let result = (fahr - 32) * 5/9;
if (Number.isInteger(result) === false) {
return result.toFixed(1);
} else {return result}
}
}
const ctof = function(celc) {
let input = celc;
if (typeof input === 'number') {
let result = celc * (9/5) + 32;
if (Number.isInteger(result) === false) {
return result.toFixed(1);
} else {return result}
}
}
module.exports = {
ftoc,
ctof
}
下面是测试
const {ftoc, ctof} = require('./tempConversion')
describe('ftoc', function() {
it('works', function() {
expect(ftoc(32)).toEqual(0);
});
it('rounds to 1 decimal', function() {
expect(ftoc(100)).toEqual(37.8);
});
it('works with negatives', function() {
expect(ftoc(-100)).toEqual(-73.3);
});
});
describe('ctof', function() {
it('works', function() {
expect(ctof(0)).toEqual(32);
});
it('rounds to 1 decimal', function() {
expect(ctof(73.2)).toEqual(163.8);
});
it('works with negatives', function() {
expect(ctof(-10)).toEqual(14);
});
});
我的错误如下:
预计“163.8”等于163.8。
预计“37.8”等于37.8。
预期“-73.3”等于73.3
看起来在数值结果之后会有一些额外的时间,我不知道为什么会这样。谢谢 您的函数正在返回一个
字符串
,因此只需将expect
更新为:
expect(ftoc(100)).toEqual("37.8");
它会起作用的
原因是,.toFixed
默认情况下返回一个字符串
,如文档所示