javascript - 四舍五入到特定数字
问题描述
我正在寻找一个标准的 JS 方法,它基本上可以做到这一点:
iRoundTo1 = Math.abs(1000000 - myValue);
iRoundTo2 = Math.abs(2000000 - myValue);
iRoundTo5 = Math.abs(5000000 - myValue);
myValue = Math.min(iRoundTo1, iRoundTo2,
iRoundTo5);
if (myValue === iRoundTo1) {
myValue = 1000000;
} else if (myValue === iRoundTo2) {
myValue = 2000000;
} else if (myValue === iRoundTo5) {
myValue = 5000000;
}
如标题中所述,我希望将我的值四舍五入为特定数字,即 1M、2M 和 5M。
解决方案
当然,您必须自己实现这种特殊的东西。如果您只是想要一些花哨的单行解决方案来使您的代码更干净:
var myValue = 1234567;
var rounded = [1000000,2000000,5000000].reduce((y,x)=>{return y.diff == undefined || Math.abs(x-myValue) < y.diff ? {val:x,diff:Math.abs(x-myValue)} : y},{}).val;
console.log(rounded);
或者您可以声明一个函数以使其更加简洁。
推荐阅读
- mysql - 小组再见 Mysql 8
- php - 如何使用 PHP 将数组打印到 XML
- javascript - 尝试将对象推送到数组时出现打字稿“padStart”错误
- reactjs - 找不到模块“D:\Resources\DevOps\eslint\bin\eslint.js”
- typescript - 如何使用 Jest 和 Typescript 模拟 PouchDb 数据库?
- android - new HTTPConnection1.execute() 中的编译器错误;其中 HTTPConnection1 类扩展了 AsyncTask
- spring-boot - springboot中用户首次注册时如何返回一个JWTtoken
- javascript - 如何以良好的格式显示 express-validator 生成的错误消息
- c# - 如何将 OR 子句添加到 ASP.NET CORE 授权策略?
- jooq - 跨多个分支的 JOOQ 代码生成策略