Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 功能测试,四舍五入至小数点后一位,即使答案正确,也显示错误?_Javascript_Function_Math_Decimal_Rounding - Fatal编程技术网

Javascript 功能测试,四舍五入至小数点后一位,即使答案正确,也显示错误?

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

我的功能是输入华氏温度并输出到摄氏度的转换,或者输入摄氏温度并输出到华氏度的转换。我的测试要求我将所有结果四舍五入到第一个小数点,这一点我做得很正确。然而,我的测试表明不是这样,我使用“Jasmine”来测试代码。这是我得到的

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
默认情况下返回一个
字符串
,如文档所示