Math.f16round()
Baseline 2025Newly available
Since April 2025, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
Math.f16round()
정적 메서드는 숫자의 가장 가까운 16비트 반정밀도 부동소수점 표현을 반환합니다.
시도해 보기
console.log(Math.f16round(5.5));
// Expected output: 5.5
console.log(Math.f16round(5.05));
// Expected output: 5.05078125
console.log(Math.f16round(5));
// Expected output: 5
console.log(Math.f16round(-5.05));
// Expected output: -5.05078125
구문
Math.f16round(doubleFloat)
매개변수
doubleFloat
-
숫자.
반환 값
doubleFloat
의 가장 가까운 16비트 반정밀도 부동소수점 표현.
설명
Math.f16round
는 Math.fround()
의 16비트 버전입니다. 이는 Float16Array
에서 읽을 때와 같이 float16 숫자와 상호 작용할 때 발생하는 일부 문제점을 해결하기 위한 것입니다. 내부적으로 JavaScript는 여전히 숫자를 64비트 부동소수점으로 취급하지만, 가수의 10번째 비트에서 "짝수로 반올림"을 수행하고 이후의 모든 가수 비트를 0
으로 설정합니다. 숫자가 16비트 부동소수점의 범위를 벗어나면 Infinity
또는 -Infinity
가 반환됩니다.
f16round()
는 Math
의 정적 메서드이므로, 생성한 Math
객체의 메서드로 사용하는 것이 아니라 항상 Math.f16round()
로 사용합니다(Math
는 생성자가 아닙니다).
예제
Math.f16round() 사용하기
숫자 1.5는 이진 숫자 시스템에서 정확하게 표현될 수 있으며, 16비트와 64비트에서 동일합니다.
Math.f16round(1.5); // 1.5
Math.f16round(1.5) === 1.5; // true
그러나 숫자 1.337은 이진 숫자 시스템에서 정확하게 표현될 수 없기 때문에 16비트와 64비트에서 다릅니다.
Math.f16round(1.337); // 1.3369140625
Math.f16round(1.337) === 1.337; // false
100000은 16비트 부동소수점에 비해 너무 크므로 Infinity
가 반환됩니다:
Math.f16round(100000); // Infinity
명세서
Specification |
---|
Float16Array # sec-math.f16round |