我有一个时间字符串,格式是HHMM,我需要得到它的小数,我该怎么办?
例如
'1221'= 1221
'0101'= 101
'0011'= 11
'0001'= 1
如果字符串以"0x"开头,则基数为16(十六进制)
如果字符串以"0"开头,则基数为8(八进制).
但无论是从0还是00或000开始,我都希望将其视为十进制.
额外:
谢谢大家.
我知道你说了什么,是什么让我困惑如下:
var temp1 = 0300; var temp2 = '0300';
parseInt函数(temp1,10)= 192; parseInt函数(temp1,10)= 300;
所以我怀疑parseInt()并有这个问题.
parseInt()自己使用并指定基数.
parseInt("10") // 10
parseInt("10", 10) // 10
parseInt("010") // 8
parseInt("10", 8) // 8
parseInt("0x10") // 16
parseInt("10", 16) // 16
Run Code Online (Sandbox Code Playgroud)
注意:您应该始终提供可选的radix参数,因为如果没有提供,parseInt将尝试自己解决它.这可能会导致一些非常奇怪的行为.
更新:
这有点像黑客.但是尝试使用一个String对象:
var s = "0300";
parseInt(s, 10); // 300
Run Code Online (Sandbox Code Playgroud)
这个hack的缺点是你需要指定一个字符串变量.以下示例均不起作用:
parseInt(0300 + "", 10); // 192
parseInt(0300.toString(), 10); // 192
parseInt(Number(0300).toString(), 10) // 192
Run Code Online (Sandbox Code Playgroud)