js 数据类型转换

前几天写微信小程序支付这一块遇到点问题,最后解决发现是js数据类型转换的原因:
这是后台传来的数据
 info: {
        explain: "提现至微信账户,1-5个工作日到账",
        minAmount: 100, //最低提现金额
        ecacshStatus: 0, //0可提现,1提现中,2不可提现
        balance: "1.00"
      },
这是用户需要输入提现的金额
   input.inputClass(type="digit" :value="amount" @input="inputAmount")
点击提交做判断时出了问题:
 if (this.amount > this.info.balance) {
        wx.showModal({
          title: "提示",
          content: "余额不足",
          showCancel: false,
          confirmText: "确定"
        });
      } 

假设this.info.balance="30"元,用户输入的值拿到后为"5"(this.amount = "5"),两个数作比较,这时if (this.amount > this.info.balance) 的结果为true... 所以就一直显示余额不足,最后找到问题原因,发现输入框里拿到的值类型为String,后台传来的值类型也是String,两个字符串做比较时,只比较第一位的大小,也就是30元只比较第一位,(字符串'5' > 字符串'3'),

好吧,对于这种了解过但是很少遇到的实战问题,基础知识,这种错误确实不应该再犯了,所以今天做个笔记时刻提醒自己

首先不知道数据类型的情况下,先检测数值的数据类型

typeof "John"                 // 返回 string
typeof 3.14                   // 返回 number
typeof NaN                    // 返回 number
typeof false                  // 返回 boolean
typeof [1,2,3,4]              // 返回 object
typeof {name:'John', age:34}  // 返回 object
typeof new Date()             // 返回 object
typeof function () {}         // 返回 function
typeof myCar                  // 返回 undefined (如果 myCar 没有声明)
typeof null                   // 返回 object

JavaScript 类型转换

(1) String() 可以将数字转换为字符串。

该方法可用于任何类型的数字,字母,变量,表达式:

var x = 123;
String(x)   //123      // 将变量 x 转换为字符串并返回
String(123) //123       // 将数字 123 转换为字符串并返回
String(100 + 23) //123  // 将数字表达式转换为字符串并返回
(2) 将字符串转换为数字
第一种

字符串包含数字(如 "3.14") 转换为数字 (如 3.14).
空字符串转换为 0。
其他的字符串会转换为 NaN (不是个数字)。

Number("3.14")    // 返回 3.14
Number(" ")       // 返回 0
Number("")        // 返回 0
Number("99 88")   // 返回 NaN

Number 方法 章节中,你可以查看到更多关于字符串转为数字的方法:

其他方法:

parseFloat() 解析一个字符串,并返回一个浮点数:

<script>

document.write(parseFloat("10") + "<br>");
document.write(parseFloat("10.33") + "<br>");
document.write(parseFloat("34 45 66") + "<br>");
document.write(parseFloat(" 60 ") + "<br>");
document.write(parseFloat("40 years") + "<br>");
document.write(parseFloat("He was 40") + "<br>");

</script>
以上实例输出结果:
10
10.33
34
60
40
NaN

parseInt() 解析一个字符串,并返回一个整数:


radix 代表进制数
parseInt("10");         //返回 10
parseInt("19",10);      //返回 19 (10+9)
parseInt("11",2);       //返回 3 (2+1)
parseInt("17",8);       //返回 15 (8+7)
parseInt("1f",16);      //返回 31 (16+15)
parseInt("010");        //未定:返回 10 或 8

Number 对象方法

| 方法 | 描述 |
| isFinite | 检测指定参数是否为无穷大。 |
| toExponential(x) | 把对象的值转换为指数计数法。 |
| toFixed(x) | 把数字转换为字符串,结果的小数点后有指定位数的数字。 |
| toPrecision(x) | 把数字格式化为指定的长度。 |
| toString() | 把数字转换为字符串,使用指定的基数。 |
| valueOf() | 返回一个 Number 对象的基本数字值。 |

toFixed()

方法可把 Number 四舍五入为指定小数位数的数字。

var num = 5.56789;
var n=num.toFixed(2);
n 输出结果:
5.57


将一个数字,不留任何小数:
var num = 5.56789;
var n=num.toFixed();
n 输出结果:
6
toPrecision() 方法
把数字格式化为指定的长度:

var num = new Number(13.3714);
var n=num.toPrecision(2);
n 输出结果:
13


使用不同进制把数字格式化为指定的长度:

var num = new Number(13.3714);
var a = num.toPrecision();
var b = num.toPrecision(2);
var c = num.toPrecision(3);
var d = num.toPrecision(10);
a,b,c, 和 d 输出结果:
13.3714
13
13.4
13.37140000
toString() 方法
把数字转换为字符串:

var num = 15;
var n = num.toString();
n 输出结果:
15


在本例中,我们使用不同进制把一个数字转换为字符串:

var num = 15;
var a = num.toString();
var b = num.toString(2);
var c = num.toString(8);
var d = num.toString(16);
a,b,c, 和 d 输出结果:

15
1111
17
f
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概述 JavaScript 是一种动态类型语言,变量没有类型限制,可以随时赋予任意值。 上面代码中,变量x到底是数...
    oWSQo阅读 3,741评论 0 2
  • JavaScript 是一种弱类型的语言,也就是没有类型限制,变量可以随时被赋予任意值。同时,在程序运行过程中,类...
    胡小胖_阅读 239评论 0 0
  • 1. 转字符串 1.1 String(x) String函数可以将任意类型的值转化成字符串。 数值:转化为相应的字...
    sxfshdf阅读 595评论 0 50
  • 转布尔值 Boolean类型只有两个字面值:true和false。在条件判断时会出现假的(false)情况为:“ ...
    哎呦_連啓阅读 970评论 0 4
  •   引用类型的值(对象)是引用类型的一个实例。   在 ECMAscript 中,引用类型是一种数据结构,用于将数...
    霜天晓阅读 1,088评论 0 1