是否有一个JS函数来查找小数点前后的值
Is there ay JS function to find value before and after decimal point
我正在使用JavaScript验证一个十进制数。我只是用NaN
var a = 12345.67是否有任何javascript函数来获取小数点前后的计数或值本身?
before() should return 1234
after() should return 67
请不要建议子字符串!
var a = 12345.67;
alert(a.toString().split(".")[0]); ///before
alert(a.toString().split(".")[1]); ///after
这是一个简单的小提琴http://jsfiddle.net/qWtSc/
zzzzBov的建议是
Number.prototype.before = function () {
var value = parseInt(this.toString().split(".")[0], 10);//before
return value ? value : 0;
}
Number.prototype.after = function () {
var value = parseInt(this.toString().split(".")[1], 10);//after
return value ? value : 0;
}
使用alert(a.before()); ///before
alert(a.after()); ///after
before
很容易。这只是一个四舍五入的运算。
var before = function(n) {
return Math.floor(n);
};
after
未经字符串处理更难。我是说你怎么处理after(Math.PI)
?你毕竟不能保存一个有无限位数的整数。
但是对于一些字符串处理,这很容易,只要知道它不会是精确的,因为浮点数学的奇迹。
var after = function(n) {
var fraction = n.toString().split('.')[1];
return parseInt(fraction, 10);
};
播放其他答案…你想要一个"数字"版本……将其转换为字符串并使用split函数仍然是最简单的…
function getNatural(num) {
return parseFloat(num.toString().split(".")[0]);
}
function getDecimal(num) {
return parseFloat(num.toString().split(".")[1]);
}
var a = 12345.67;
alert(getNatural(a)); ///before
alert(getDecimal(a)); ///after
http://jsfiddle.net/rlemon/qWtSc/1/var decimalPlaces = 2;
var num = 12345.673
var roundedDecimal = num.toFixed(decimalPlaces);
var intPart = Math.floor(roundedDecimal);
var fracPart = parseInt((roundedDecimal - intPart), 10);
//or
var fractPart = (roundedDecimal - intPart) * Math.pow(10, decimalPlaces);
查找点后字符的数目/长度:
var a = 12345.67;
var after_dot = (a.toString().split(".")[1]).length;
var before_dot= (a.toString().split(".")[0]).length;
不幸的是,没有办法使用数学函数以可靠的方式获得阶乘部分,因为经常会出现非常奇怪的四舍五入,这取决于所使用的Javascript引擎。最好的方法是将其转换为字符串,然后检查结果是十进制还是科学记数法。
Number.prototype.after = function() {
var string = this.toString();
var epos = string.indexOf("e");
if (epos === -1) { // Decimal notation
var i = string.indexOf(".");
return i === -1 ? "" : n.substring(i + 1);
}
// Scientific notation
var exp = string.substring(epos + 1) - 0; // this is actually faster
// than parseInt in many browsers
var mantix = n.string.substring(0, epos).replace(".", "");
if (exp >= -1) return mantix.substring(exp + 1);
for (; exp < -1; exp++) mantix = "0" + mantix;
return mantix;
}
如果小数点后的数字是固定的,则此解决方案无需转换为字符串。
这个例子给出了十进制后2位数字的解。
小数点前:
const wholeNum = Math.floor(num);
小数后:
let decimal = (num - wholeNum) * 100
相关文章:
- 正在全局范围中查找JavaScript函数
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 在不使用jquery的情况下查找页面中的所有锚点并附加函数
- es6 相当于下划线查找位置
- 在DOM中查找一个模式并替换它's的内容使用jquery
- 如何使用jquery迭代具有相同属性的html元素并查找onclick事件
- 如何在不传递此信息的情况下查找被调用的元素
- Lodash 从值数组中查找数组中的值
- 如何使用JavaScript查找1和N之间的所有数字的总和
- 使用RegExp查找url中的字符
- 查找元素高度,包括边距
- 使用JS查找数组的平均值
- 查找最短和最长日期
- 将数字四舍五入到小数点后两位
- 猫鼬在特定记录中查找嵌套记录
- 使用javascript在MVC中查找网格长度时出错
- 在Javascript数组中查找绝对最大值
- 形成在重复小数点内查找模式的正则表达式
- 是否有一个JS函数来查找小数点前后的值
- 查找小于小数点后两位的数字的REGEXP