Javascript 同时满足保留有效数字和上下取整
const ceil = (x: any, n: number) => {
let shift = Math.ceil(Math.log10(x)) - n
let y = Math.ceil(x / 10 ** shift)
let result = Number((y * 10 ** shift).toPrecision(n))
return result
}
const floor = (x: any, n: number) => {
let shift = Math.ceil(Math.log10(x)) - n
let y = Math.floor(x / 10 ** shift)
let result = Number((y * 10 ** shift).toPrecision(n))
return result
}