将浮点数舍入到最接近的<n>的倍数?

时间:2015-08-19 22:15:57

标签: javascript rounding

如何将浮点值舍入到最接近的“n”倍数?

例如,将21.673舍入到最接近的8的倍数应该得到24。

并且,将21.673舍入到最接近的4的倍数应该得到20。

我需要JavaScript中的解决方案。

谢谢!

2 个答案:

答案 0 :(得分:2)

很容易

Math.round(value / n) * n

答案 1 :(得分:0)

还有另一个,略短,略faster

//DataModel
    struct Post: Codable, Hashable,Identifiable {
        let id: Int
        let username: String
        let body: String
    }

     class Service {
            static let shared = Service()
            enter code here
            func fetchPosts(completion: @escaping ([Post]) -> ()) {
                guard let url = URL(string: "http://localhost:1337/post") else {
                    fatalError("URL is not correct!")
                }
                URLSession.shared.dataTask(with: url) { data, _, _ in
                    let posts = try! JSONDecoder().decode([Post].self, from: data!)
                    DispatchQueue.main.async {
                        completion(posts)
                    }
                }.resume()
            }
        }

        struct Find: View {

            @State var model = PostListViewModel()

            var body: some View {
                List {
                    ForEach(model.posts) { post in
                        Text(post.username)
                    }
                }
            }
        }

似乎可以达到预期效果:

const nearrestMultipleOfN = (N,n) => n*(N/n+0.5|0);
const nearrestMultipleOfN = (N,n) => n*(N/n+0.5|0);
 
 console.log(nearrestMultipleOfN(21.673,8));
 console.log(nearrestMultipleOfN(21.673,4));

如果发现自己正在寻找不超过{strong>不超过 .as-console-wrapper{min-height:100%}最大整数(即返回6,可被3整除) ,当给出8)时,您可能会喜欢,

n