我如何拆分十进制数?变量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
。我不知道我哪里出错了?
答案 0 :(得分:9)
您忘记从split
函数返回数组:
bidnumber = bidnumber.toString().split('.');
答案 1 :(得分:1)
split
方法不会将数组放回变量中。substr
方法不会将新字符串放回变量中。所以:
bidnumber = bidnumber.split('.');
var first = bidnumber[0];
var second = bidnumber[1];
second = second.substr(0, 1);
var finalnumber = first + '.' + second;
或者只是:
bidnumber = bidnumber.split('.');
bidnumber[1] = bidnumber[1].substr(0, 1);
var finalnumber = bidnumber.join('.');
还要考虑将字符串解析为数字并将其四舍五入:
var finalnumber = Math.round(parseFloat(bidnumber) * 10) / 10;
答案 2 :(得分:1)
您不应使用split
拆分数字的整数和小数部分。
例如,10.70
在拆分时(将70转换为美分)会给10.7
提供不同的答案,即使它们是相同的号码
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);
最后一行确保即使原始数字为负数,分数也是正数。
~~
运算符实际上是~
运算符的两个实例,它是一个按位“非”运算符,它将任意数字截断为32位有符号值,丢弃任何小数部分。翻转两次给出原始数字,但没有分数。
这是获得“向零舍入”结果的最简单方法,因为Math.floor()
实际上会-11
输入-10.70