【问题标题】:JQuery autogeocomplete set string lengthJQuery autogeocomplete 设置字符串长度
【发布时间】:2012-04-12 23:51:31
【问题描述】:

我正在使用 JQuery autogeocomplete,基本上 lat_id 和 lng_id 字符串在 .

我需要设置它,使其在点后不超过 6 位。

例如:

Before:
-1.1501888001110125
After
-1.150188

这可能吗?如果没有,有办法解决吗?

【问题讨论】:

  • 不应该是 -1.150189 吗?或者你不想四舍五入 - 你知道地图上的标记会移动(即它不那么准确)
  • 不,不想四舍五入。只想把积分后多余的数字去掉,只剩下6。

标签: javascript jquery google-api geocoding


【解决方案1】:

试试这个:

var mystring = "-1.1501888001110125";
var newstring = mystring.substr(0,(mystring.indexOf('.') + 7));

(它是 7,因为“。”加上 6 个字符)

Working example here

修剪input

$('#inputid').change(function() {
    var $this = $(this);
    var $thisval = $this.val();
    if ($thisval.indexOf('.') > 0 && $thisval.length > 7) {
        $this.val($thisval.substr(0, ($thisval.indexOf('.') + 7)));
    }
});​

Working example here

【讨论】:

  • 这个解决方案唯一的坏处是你削减了数字而不是四舍五入。如果你有 1.50188899999999999 它将是 1.501888 而不是 1.501889 如果你四舍五入它会是什么。在某些情况下您希望在某些情况下不这样做。
  • @S.Visser 看看 OPs 问题上的 cmets - “没有舍入”,它是一个字符串而不是数字,所以 substr 更有效
  • 抱歉,没有看到 cmets。刚刚在他的帖子中看到了这一点“这是否可能,有没有办法解决它?”。但除此之外,对于通过搜索来到这里的人来说,这是一件好事。顺便说一句,这不是说您的代码不好或其他什么的方式;)
【解决方案2】:
function roundNumber(num, dec) {
    var result = Math.round(num*Math.pow(10,dec))/Math.pow(10,dec);
    return result;
}

alert(​roundNumber(-1.32423423421421312​, 6))
​

输出:http://jsfiddle.net/PfNgh/

【讨论】:

    猜你喜欢
    • 2015-01-13
    • 1970-01-01
    • 2012-04-27
    • 1970-01-01
    • 2015-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多