实现对数字保留两位小数效果,如果数字的原本小数位数不到两位,那么缺少的就自动补零 (toString/indexOf/split/substring的用法)

function returnFloat(num) {
  num = num.toString(); // 转成字符串类型  如能确定类型 这步可省去
  if (num.indexOf(".") !== -1) {
    let [integerPart, decimalPart] = num.split(".");
 
    if (decimalPart.length > 2) {
      decimalPart = decimalPart.substring(0, 2);
    } else if (decimalPart.length === 1) {
      decimalPart += "0";
    }
      
    //decimalPart = decimalPart.length > 2 ? decimalPart.substring(0, 2) : decimalPart.padEnd(2, '0'); 此处正则表达式有问题 会过滤掉长度为0的状态
 
    num = `${integerPart}.${decimalPart}`;
  } else {
    num += ".00";
  }
 
  return num;
}

这段代码定义了一个名为 returnFloat 的函数,它接受一个参数 num(可能是一个数字、字符串或其他可转换为字符串的类型),并返回一个格式化为两位小数的字符串。现在我将逐步解释这段代码:

  1. 转换为字符串:

javascript复制代码

num = num.toString();

这行代码将 num 转换为字符串。如果 num 已经是字符串,这一步是多余的,但如果不确定 num 的类型,这是一个安全的做法。
2. 检查是否包含小数点:

 

javascript复制代码

if (num.indexOf(".") !== -1) {

这行代码检查字符串 num 是否包含小数点。如果包含,则执行以下操作。
3. 分割整数部分和小数部分:

 

javascript复制代码

let [integerPart, decimalPart] = num.split(".");

使用 split(".") 将字符串按小数点分割,并将结果赋值给 integerPart(整数部分)和 decimalPart(小数部分)。
4. 处理小数部分的长度:

 

复制代码

* 如果小数部分的长度大于2,则只保留前两位。
```javascript
if (decimalPart.length > 2) {
decimalPart = decimalPart.substring(0, 2);
}
```
* 如果小数部分的长度等于1,则在其后添加一个0,以确保它总是两位。
```javascript
else if (decimalPart.length === 1) {
decimalPart += "0";
}
```
注意:原始代码中有一个被注释掉的行,该行代码试图使用正则表达式或 `String.prototype.padEnd` 方法来处理小数部分的长度,但由于某些原因(可能是逻辑错误或代码冗余)被注释掉了。

5. 重新组合数字和字符串:

 

javascript复制代码

num = `${integerPart}.${decimalPart}`;

使用模板字符串将整数部分和小数部分重新组合为一个字符串。
6. 如果原始数字没有小数点:

 

javascript复制代码

} else {
num += ".00";
}

如果原始字符串 num 不包含小数点,则在其后添加 ".00"。
7. 返回结果:

 

javascript复制代码

return num;

最后,函数返回格式化后的字符串。

注意:虽然函数名为 returnFloat,但它实际上并不返回浮点数(number 类型),而是返回一个字符串。如果你想返回一个真正的浮点数,你需要在返回前使用 parseFloat 或 Number 函数进行转换。但是,由于你正在处理格式化为两位小数的需求,字符串可能是更合适的返回类型。

当然,我会分别解释 toString()indexOf()split(), 和 substring() 这些方法的用法。

  1. toString()

toString() 是 JavaScript 中大多数对象的一个方法,用于将对象转换为字符串。对于数字(Number)、布尔值(Boolean)、数组(Array)等内置类型,它都会返回相应的字符串表示。

例如:

 

javascript复制代码

let num = 123;
let str = num.toString(); // str 现在是 "123"
let bool = true;
str = bool.toString(); // str 现在是 "true"
let arr = [1, 2, 3];
str = arr.toString(); // str 现在是 "1,2,3"

注意:对于 null 和 undefined,直接调用 toString() 会抛出错误,因为它们没有这个方法。

  1. indexOf()

indexOf() 是字符串(String)对象的一个方法,用于查找一个字符串在另一个字符串中首次出现的位置。如果找到,它会返回该位置的索引(从0开始);如果没有找到,它会返回 -1。

例如:

 

javascript复制代码

let str = "Hello, World!";
let index = str.indexOf("World"); // index 现在是 7
index = str.indexOf("JavaScript"); // index 现在是 -1,因为字符串中不包含 "JavaScript"

indexOf() 还可以接受一个可选的第二个参数,表示从哪个索引位置开始搜索。

  1. split()

split() 是字符串(String)对象的一个方法,用于将字符串分割成子字符串数组,并返回这个数组。分割是基于指定的分隔符(或正则表达式)进行的。

例如:

 

javascript复制代码

let str = "apple,banana,orange";
let arr = str.split(","); // arr 现在是 ["apple", "banana", "orange"]
str = "one:two:three:four";
arr = str.split(":"); // arr 现在是 ["one", "two", "three", "four"]

split() 方法也可以接受一个可选的第二个参数,表示返回的数组的最大长度。

  1. substring()

substring() 是字符串(String)对象的一个方法,用于提取字符串中介于两个指定下标之间的字符。返回的子字符串包括开始处的字符,但不包括结束处的字符。

例如:

 

javascript复制代码

let str = "Hello, World!";
let sub = str.substring(0, 5); // sub 现在是 "Hello"
sub = str.substring(7); // sub 现在是 "World!",因为当只有一个参数时,substring() 会提取从开始索引到字符串末尾的所有字符

注意:与 slice() 方法类似,但 substring() 不接受负索引,且总是将较小的索引值作为起始点,较大的索引值作为结束点(如果两者被颠倒)。这与 slice() 的行为有所不同。

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值