解决Number((Math.random() * 100).toFixed(2))精度丢失问题
时间: 2023-10-07 19:10:23 浏览: 268
在这个例子中,我们可以使用整数来代替小数进行计算。具体而言,我们可以将Math.random()的结果乘以10000,然后将结果四舍五入,再除以100来保留两位小数。
代码如下:
```
Number((Math.round(Math.random() * 10000) / 100).toFixed(2))
```
这样,我们就可以避免使用浮点数进行计算,从而减少精度丢失的问题。
相关问题
帮我在一个点击事件中,给一个数组this.markerList插入一千条假数据,this.markerList的数组结构是[id:number,Inglat[number,number],name:string],其中Inglat表示经纬度,要求每条假数据的Inglat不可重复,内容全随机,请给我代码示例
好的,以下是一份示例代码:
```javascript
function generateMarkers() {
const markerList = [];
const latSet = new Set();
const lngSet = new Set();
for (let i = 0; i < 1000; i++) {
let id = i + 1;
let lat = getRandomCoord(latSet);
let lng = getRandomCoord(lngSet);
let name = `Marker ${id}`;
markerList.push([id, [lat, lng], name]);
}
this.markerList = markerList;
function getRandomCoord(coordSet) {
let coord;
do {
coord = (Math.random() * 180 - 90).toFixed(6);
} while (coordSet.has(coord));
coordSet.add(coord);
return Number(coord);
}
}
// 调用该函数即可插入一千条随机数据
generateMarkers.call(this);
```
该函数会生成一千条随机数据,并将其插入到 `this.markerList` 中。同时,为了保证每个随机数据的 `Inglat` 不重复,我们使用了一个 `Set` 来保存已经生成的值,避免重复。
帮我在一个点击事件click中,给一个数组this.markerList插入一千条假数据,this.markerList的数组结构是[id:number,Inglat[number,number],name:string],其中Inglat表示经纬度,要求每条假数据的Inglat不可重复,内容全随机,请给我代码示例
好的,以下是一份示例代码:
```javascript
function handleClick() {
const markerList = [];
const latSet = new Set();
const lngSet = new Set();
for (let i = 0; i < 1000; i++) {
let id = i + 1;
let lat = getRandomCoord(latSet);
let lng = getRandomCoord(lngSet);
let name = `Marker ${id}`;
markerList.push([id, [lat, lng], name]);
}
this.markerList = markerList;
function getRandomCoord(coordSet) {
let coord;
do {
coord = (Math.random() * 180 - 90).toFixed(6);
} while (coordSet.has(coord));
coordSet.add(coord);
return Number(coord);
}
}
// 在点击事件中调用该函数即可插入一千条随机数据
document.querySelector('button').addEventListener('click', handleClick.bind(this));
```
该函数会在点击事件被触发时生成一千条随机数据,并将其插入到 `this.markerList` 中。同时,为了保证每个随机数据的 `Inglat` 不重复,我们使用了一个 `Set` 来保存已经生成的值,避免重复。请注意,我们使用了 `bind` 方法来确保函数内部的 `this` 指向正确。
阅读全文