Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 分裂不起作用_Javascript_Jquery - Fatal编程技术网

Javascript 分裂不起作用

Javascript 分裂不起作用,javascript,jquery,Javascript,Jquery,如何拆分十进制数?变量bidnumber为10.70 var bidnumber = $(this).parent('div').siblings('.advert-details').find('tr:eq(3)').find('.advert-details-col-2').attr('data-bid'); bidnumber.toString().split('.'); var first = bidnumber[0]; var second = bidnumber[1]; alert(

如何拆分十进制数?变量
bidnumber
10.70

var bidnumber = $(this).parent('div').siblings('.advert-details').find('tr:eq(3)').find('.advert-details-col-2').attr('data-bid');
bidnumber.toString().split('.');
var first = bidnumber[0];
var second = bidnumber[1];
alert(bidnumber[0]);
second.substr(0, 1);
var finalnumber = first + '.' + second;

当我提醒
bid[0]
时,它应该提醒
10
。。相反,
1
发出警报。我不知道哪里出错了?

您忘了从
拆分
函数返回数组:

bidnumber = bidnumber.toString().split('.');
  • 属性值已经是字符串,因此不必将其转换为字符串
  • split
    方法不会将数组放回变量中
  • substr
    方法不会将新字符串放回变量中
因此:

或者只是:

bidnumber = bidnumber.split('.');
bidnumber[1] = bidnumber[1].substr(0, 1);
var finalnumber = bidnumber.join('.');
还要考虑将字符串解析为数字并对其进行四舍五入:

var finalnumber = Math.round(parseFloat(bidnumber) * 10) / 10;

您不应该使用
split
将数字的整数部分和小数部分分开

例如,拆分时,
10.70
(并将70转换为美分)将给出不同的答案,即使它们是相同的编号

最后一行确保即使原始数字为负数,美分数也为正数

~
运算符实际上是
~
运算符的两个实例,它是一个按位“not”运算符,将任何数字截断为32位有符号值,丢弃任何小数部分。翻转两次将得到原始数字,但不包含分数


这是获得“向零舍入”结果的最简单方法,因为
Math.floor()
实际上会为
-10.70

的输入提供
-11
,split效果很好-您必须存储split方法的结果,它不在适当的位置。如果您想要整数部分,只需执行
Math.floor(bidnumber)
。如果需要分数,请执行
bidnumber%1
。如果你真的想在一个数组中同时使用这两个函数,那么做
[Math.floor(bidnumber),bidnumber%1]
就更容易了。对于小数部分,只需使用剩余的mod 1:
bidnumber%1
@user973810
Math.floor()
对负数不起作用,正如我在重叠编辑中所解释的那样。@user973810,而且
n%1
-您得到的分数是负数
var finalnumber = Math.round(parseFloat(bidnumber) * 10) / 10;
var bidnumber = 10.70;     // ignoring your DOM query for now

var whole = ~~bidnumber;   // quick and nasty 'truncate' operator
var cents = 100 * Math.abs(bidnumber - whole);