我使用谷歌地图Api,在任何情况下我都有很长的纬度和经度值,例如在控制台中:
results[0].geometry.location.lng()
-74.80111590000001
results[0].geometry.location.lat()
42.055163
我想在逗号之后获得最多7个字符
results[0].geometry.location.lng().toString().substring(0,10)
"-74.801115"
但是如果逗号不是7个字符后数字是否定的,那么为此我可以使用indexOf('。')并在逗号后得到7个字符,但我有很多地方在哪里我需要获得这些值,我想使用代码较少的东西 任何提案?
答案 0 :(得分:8)
看来您的纬度和长度都是数字(如果没有,可能会有更好的选择)。 JS中的数字有toFixed()
method将它们转换为具有给定小数位数的字符串。
在您的情况下,(-74.80111590000001).toFixed(7)
应该返回字符串"-74.8011159"
,我相信这就是您想要的。它也会正确舍入,substring
无法正常(不知道数字如何工作)。
答案 1 :(得分:0)
lodash v3.0.0 上周发布了新的String
选项。
您可以使用新的trunc
功能:
trunc
如果字符串长于给定的最大字符串长度,则截断字符串。 截断字符串的最后一个字符将替换为 省略字符串,默认为" ..."。
示例:
_.trunc('-74.80111590000001', 7); // -74.801
答案 2 :(得分:0)
这是一种更灵活和通用的方法,因此可以在整个脚本中重复使用一个函数,以便将数字舍入到给定的小数位数。
function roundNumber(value, decimals){
return Number(Math.round(value + 'e' + decimals) + 'e-' + decimals);
}
使用......
var rounded_lng = roundNumber(results[0].geometry.location.lng(), 7);
var rounded_lat = roundNumber(results[0].geometry.location.lat(), 7);