summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
inline | side by side (from parent 1:
5b8f999)
This new name is clearer, especially as this function now accepts
big·int arguments.
+/**
+ * Returns the result of converting the provided number to an integral
+ * number.
+ *
+ * ※ This function will never return negative zero.
+ */
+export const toIntegralNumber = ($) => {
+ const n = toIntegralNumberOrInfinity($);
+ return !isFiniteNumber(n) || n == 0 ? 0 : n;
+};
+
/**
* Returns the result of converting the provided number to an integer
* or infinity.
*
/**
* Returns the result of converting the provided number to an integer
* or infinity.
*
+ * ※ Unlike the ToIntegerOrInfinity function defined in the Ecmascript
+ * specification, this function is safe to use with big·ints. However,
+ * the result will always be a number.
+ *
* ※ This function will never return negative zero.
*/
* ※ This function will never return negative zero.
*/
-export const toIntegerOrInfinity = ($) => {
+export const toIntegralNumberOrInfinity = ($) => {
const integer = trunc(toNumber($));
if (isNan(integer) || integer == 0) {
// The provided value truncs to nan or (positive or negative) zero.
const integer = trunc(toNumber($));
if (isNan(integer) || integer == 0) {
// The provided value truncs to nan or (positive or negative) zero.
-/**
- * Returns the result of converting the provided number to an integral
- * number.
- *
- * ※ This function will never return negative zero.
- */
-export const toIntegralNumber = ($) => {
- const n = toIntegerOrInfinity($);
- return !isFiniteNumber(n) || n == 0 ? 0 : n;
-};
-
/**
* Returns the result of converting the provided value to a number.
*
/**
* Returns the result of converting the provided value to a number.
*
sgn,
toBigInt,
toFloat32,
sgn,
toBigInt,
toFloat32,
+ toIntegralNumberOrInfinity,
toIntN,
toNumber,
toNumeric,
toIntN,
toNumber,
toNumeric,
-describe("toIntegerOrInfinity", () => {
+describe("toIntegralNumber", () => {
it("[[Call]] converts nan to zero", () => {
it("[[Call]] converts nan to zero", () => {
- assertStrictEquals(toIntegerOrInfinity(NaN), 0);
+ assertStrictEquals(toIntegralNumber(NaN), 0);
});
it("[[Call]] converts negative zero to positive zero", () => {
});
it("[[Call]] converts negative zero to positive zero", () => {
- assertStrictEquals(toIntegerOrInfinity(-0), 0);
+ assertStrictEquals(toIntegralNumber(-0), 0);
});
it("[[Call]] drops the fractional part of negative numbers", () => {
});
it("[[Call]] drops the fractional part of negative numbers", () => {
- assertStrictEquals(toIntegerOrInfinity(-1.79), -1);
+ assertStrictEquals(toIntegralNumber(-1.79), -1);
- it("[[Call]] returns infinity for infinity", () => {
- assertStrictEquals(toIntegerOrInfinity(Infinity), Infinity);
+ it("[[Call]] returns zero for infinity", () => {
+ assertStrictEquals(toIntegralNumber(Infinity), 0);
- it("[[Call]] returns negative infinity for negative infinity", () => {
- assertStrictEquals(toIntegerOrInfinity(-Infinity), -Infinity);
+ it("[[Call]] returns zero for negative infinity", () => {
+ assertStrictEquals(toIntegralNumber(-Infinity), 0);
});
it("[[Call]] works with big·ints", () => {
});
it("[[Call]] works with big·ints", () => {
- assertStrictEquals(toIntegerOrInfinity(2n), 2);
+ assertStrictEquals(toIntegralNumber(2n), 2);
-describe("toIntegralNumber", () => {
+describe("toIntegralNumberOrInfinity", () => {
it("[[Call]] converts nan to zero", () => {
it("[[Call]] converts nan to zero", () => {
- assertStrictEquals(toIntegralNumber(NaN), 0);
+ assertStrictEquals(toIntegralNumberOrInfinity(NaN), 0);
});
it("[[Call]] converts negative zero to positive zero", () => {
});
it("[[Call]] converts negative zero to positive zero", () => {
- assertStrictEquals(toIntegralNumber(-0), 0);
+ assertStrictEquals(toIntegralNumberOrInfinity(-0), 0);
});
it("[[Call]] drops the fractional part of negative numbers", () => {
});
it("[[Call]] drops the fractional part of negative numbers", () => {
- assertStrictEquals(toIntegralNumber(-1.79), -1);
+ assertStrictEquals(toIntegralNumberOrInfinity(-1.79), -1);
- it("[[Call]] returns zero for infinity", () => {
- assertStrictEquals(toIntegralNumber(Infinity), 0);
+ it("[[Call]] returns infinity for infinity", () => {
+ assertStrictEquals(toIntegralNumberOrInfinity(Infinity), Infinity);
- it("[[Call]] returns zero for negative infinity", () => {
- assertStrictEquals(toIntegralNumber(-Infinity), 0);
+ it("[[Call]] returns negative infinity for negative infinity", () => {
+ assertStrictEquals(
+ toIntegralNumberOrInfinity(-Infinity),
+ -Infinity,
+ );
});
it("[[Call]] works with big·ints", () => {
});
it("[[Call]] works with big·ints", () => {
- assertStrictEquals(toIntegralNumber(2n), 2);
+ assertStrictEquals(toIntegralNumberOrInfinity(2n), 2);