it ("tests a positive zero", function() {
expect((Math.sin(-1*Math.PI)*300).toFixed(3)).toEqual("0.000");
});
但它失敗了,因爲它產生-0.000(在鉻和safari測試)。使用regexp.replace刪除 - 是我最後(當前唯一的解決方案)有更多?toFixed(3)-6.1e-15返回-0.000,我該如何溝渠減號?
it ("tests a positive zero", function() {
expect((Math.sin(-1*Math.PI)*300).toFixed(3)).toEqual("0.000");
});
但它失敗了,因爲它產生-0.000(在鉻和safari測試)。使用regexp.replace刪除 - 是我最後(當前唯一的解決方案)有更多?toFixed(3)-6.1e-15返回-0.000,我該如何溝渠減號?
Math.abs(number);//<<absolute value
這隻返回「0」,而不是「0.000」,僅爲FYI。 –
@Rocket ...所以使用'parseFloat()'..或其他東西來轉換它。另外:'0 === 0.000' – Neal
@Kooilnc但適用於Math.sin(Math.PI/-2)不會產生正確的結果。我希望有一個參數在toFixed或另一種方法,我可以應用一些數字格式,因爲我可以在java或perl(甚至excel) –
測試「正零」不正確。如果你想要的數字是0.000到三個DP,只需檢查數字是否在(-0.0005,0.0005)之內。例如,
expect(Math.sin(-Math.PI) * 300).between(-0.0005, 0.0005);
(您可能需要一個between
方法添加到您的expect
,如果它不提供它以不同的名稱。)
什麼是期望(...)。(...)之間? –
@火箭:這是一個假設的功能,可能(希望)由OP使用的單元測試庫提供。如果該值不在給定的範圍內,它會拋出異常。 –
豈不Math.abs((Math.sin(-1*Math.PI)*300)).toFixed(3)
工作?
[根據註釋編輯]或:
Number((Math.sin(-1*Math.PI)*300).toFixed(3)).toFixed(3);
@Kooilnc - 請參閱OP的評論我的答案(不知道爲什麼它的存在) – Neal
耶,浮點數和舍入的問題。 –
還有'Math.abs' – bfavaretto
返回絕對值? – kd7