在javascript中不带舍入的十进制比较
Decimal Comparison without rounding in javascript
我有 2 个用于十进制值的文本框,我需要在 JavaScript 中比较它们。场景是
var first = $('#txtFirst').val();
var second= $('#txtSecond').val();
在文本框中,我输入以下值
第一个 => 99999999999998.999999997
第二个 => 99999999999998.9999999991
我尝试了以下代码
if (parseFloat(parseFloat(first).toFixed(10)) <= parseFloat(parseFloat(second).toFixed(10)))
这将返回 true,因为它对其进行四舍五入,因此两个值都变为99999999999999。如何解决?
只需比较而不转换为整数
var first = $('#txtFirst').val();
var second= $('#txtSecond').val();
if ( first == second )
{
// they are equal
}
如果您想比较最多 10 位小数,那么
var first10Decimals = first.split(".").pop().substring(0,10);
var second10Decimals = second.split(".").pop().substring(0,10);
if ( first10Decimals == second10Decimals )
{
//they are equal
}
Vanilla JavaScript 无法处理如此大的数字。你应该使用像 big.js 这样的东西,它旨在处理任意大数字:
-
GitHub : https://github.com/MikeMcl/big.js/
-
文档 : https://mikemcl.github.io/big.js/
相关文章:
- 比较从函数和生成的日期对象
- 如何使用 node.js 比较两个 json 数组
- jQuery自定义验证比较多个输入的序列
- 反向字符串比较
- 通过JSON&比较时间
- 将DOM节点值与字符串Javascript进行比较
- 从键值结构中获取数据,并将其与AngularJS中ng重复的值进行比较
- 我想在AngularJS应用程序中创建一个输入数字框,用户不应该在该框上键入十进制数字.(一个整数输入框)
- 递归深度比较
- 可以't在JavaScript中比较两个字符串
- 实现比较方法的最佳实践是什么;s的比较类型是在运行时选择的
- 如何在moment.js中只比较日期
- 无法比较javascript变量
- 比较javascript中的浮动并更改最高浮动的颜色
- 使用javascript比较对象中的对象值和数组长度
- 如何将smarty变量与javascript变量进行比较
- 比较两个数组中的元素
- MongoDB-通过比较集合和对象的数组来返回现有字段的数组
- 在javascript中不带舍入的十进制比较
- 十进制比较在 JavaScript 中失败