JS将小数转化为整数

在JavaScript中,有多种方法可以将一个值转化为整数。以下是一些常用的方法:

  1. Number.parseInt() 或 parseInt()

parseInt() 函数解析一个字符串参数,并返回一个指定基数的整数(基数介于2和36之间)。如果第一个字符不能被转换为数字,parseInt() 会返回 NaN

let numString = "123";
let num = parseInt(numString, 10); // 第二个参数是基数,通常为10,表示十进制
console.log(num); // 输出: 123

let notANumber = parseInt("hello", 10);
console.log(isNaN(notANumber)); // 输出: true
  1. Number.parseFloat() 或 parseFloat()

虽然 parseFloat() 主要用于将字符串解析为浮点数,但它也会返回一个整数值,如果该值没有小数部分。但通常建议使用 parseInt() 来明确你的意图。

let numString = "123.45";
let num = parseFloat(numString);
console.log(Math.floor(num)); // 输出: 123,但注意这实际上是四舍五入到最近的整数,而不是真正的转换
  1. 一元加号操作符 (+)

一元加号操作符会尝试将其操作数转换为数字。如果操作数是一个字符串,那么它会尝试解析该字符串为一个数字。

let numString = "123";
let num = +numString;
console.log(num); // 输出: 123
  1. Math.floor(), Math.ceil(), Math.round() 和 Math.trunc()

这些函数不直接进行类型转换,但它们在处理数字时很有用,可以将浮点数四舍五入到最接近的整数。然而,它们接受浮点数作为输入,而不是字符串。如果你有一个字符串并希望将其转换为整数,你需要先使用上述方法之一将其转换为数字。

let numFloat = 123.45;
let numRoundedDown = Math.floor(numFloat); // 向下取整
let numRoundedUp = Math.ceil(numFloat); // 向上取整
let numRounded = Math.round(numFloat); // 四舍五入
let numTruncated = Math.trunc(numFloat); // 截断小数部分

console.log(numRoundedDown); // 输出: 123
console.log(numRoundedUp); // 输出: 124
console.log(numRounded); // 输出: 123(在JavaScript中,四舍五入到最接近的偶数)
console.log(numTruncated); // 输出: 123
  1. 位操作符

使用位操作符(如 |, &, ^, ~, <<, >>, >>>)也可以将值转换为整数,因为它们都期望整数作为输入。然而,使用位操作符进行类型转换可能不是最直观或最可读的方法。

let numFloat = 123.45;
let numInteger = numFloat | 0; // 使用按位或操作符与0进行“或”运算来丢弃小数部分
console.log(numInteger); // 输出: 123
  1. Number() 构造函数或函数

虽然 Number() 可以用于将值转换为数字,但它对于字符串到整数的转换并不总是那么直接,因为它会尝试解析整个字符串为一个数字,包括任何小数部分。如果你只想要整数部分,你可能需要与其他方法(如 Math.floor())结合使用。

let numString = "123.45";
let num = Number(numString); // 这将是一个浮点数,而不是整数
let numInteger = Math.floor(num); // 转换为整数
console.log(numInteger); // 输出: 123
  1. BigInt (对于非常大的整数)

如果你正在处理超过 Number.MAX_SAFE_INTEGER(即 2^53 - 1)的整数,你可能需要使用 BigInt 类型。但是,请注意,BigInt 是一种特殊的数字类型,与普通的 Number 类型不同,并且不能与它们混合使用。

let bigIntString = "12345678901234567890"; // 这超过了Number.MAX_SAFE_INTEGER
let bigInt = BigInt(bigIntString);
console.log(bigInt); // 输出: 12345678901234567890n,注意 "n" 后缀表示这是一个BigInt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值