Hướng dẫn javascript round to nearest multiple - vòng javascript đến nhiều nhất

43

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Làm thế nào tôi có thể làm tròn một số lên bội số gần nhất của 3?

i.e.

25 would return 27
1 would return 3
0 would return 3
6 would return 6

RBT

22.3K20 Huy hiệu vàng151 Huy hiệu bạc219 Huy hiệu đồng20 gold badges151 silver badges219 bronze badges

hỏi ngày 15 tháng 7 năm 2010 lúc 9:04Jul 15, 2010 at 9:04

2

    if[n > 0]
        return Math.ceil[n/3.0] * 3;
    else if[ n < 0]
        return Math.floor[n/3.0] * 3;
    else
        return 3;

Đã trả lời ngày 15 tháng 7 năm 2010 lúc 9:06Jul 15, 2010 at 9:06

CambiumcambiumCambium

18.8K3 Huy hiệu vàng25 Huy hiệu bạc19 Huy hiệu đồng3 gold badges25 silver badges19 bronze badges

9

Simply:

3.0*Math.ceil[n/3.0]

?

Bobby Jack

15.4K12 Huy hiệu vàng64 Huy hiệu bạc96 Huy hiệu Đồng12 gold badges64 silver badges96 bronze badges

Đã trả lời ngày 25 tháng 2 năm 2014 lúc 11:27Feb 25, 2014 at 11:27

Iwan B.Iwan B.Iwan B.

3.6862 Huy hiệu vàng25 Huy hiệu bạc18 Huy hiệu Đồng2 gold badges25 silver badges18 bronze badges

5

Của bạn đây!

Number.prototype.roundTo = function[num] {
    var resto = this%num;
    if [resto  0]
        return Math.ceil[n/3.0] * 3;
    else if[ n < 0]
        return Math.floor[n/3.0] * 3;
    else
        return 3;
7 là 0, vì đó có thể là một sai lầm của OP.]

Trong số chín câu trả lời được đăng trước câu trả lời này [chưa bị xóa hoặc không có điểm thấp đến mức chúng không thể nhìn thấy đối với tất cả người dùng], chỉ có những người của Dean Nicholson [ngoại trừ vấn đề mất ý nghĩa] và Beauburrier là chính xác. Câu trả lời được chấp nhận cho kết quả sai cho các số âm và nó thêm một ngoại lệ cho 0 để tính đến những gì có thể là một sai lầm của OP. Hai câu trả lời khác làm tròn một số đến bội số gần nhất thay vì luôn làm tròn, một câu trả lời nữa cho kết quả sai cho các số âm và ba thậm chí còn cho kết quả sai cho các số dương.

Đã trả lời ngày 16 tháng 6 năm 2016 lúc 10:53Jun 16, 2016 at 10:53

Nisetamanisetamanisetama

6.7181 Huy hiệu vàng32 Huy hiệu bạc20 Huy hiệu đồng1 gold badge32 silver badges20 bronze badges

1

Hàm này sẽ làm tròn đến bội số gần nhất của bất kỳ yếu tố nào bạn cung cấp. Nó sẽ không làm tròn 0 hoặc số đã được bội số.

round_up = function[x,factor]{ return x - [x%factor] + [x%factor>0 && factor];}

round_up[25,3]
27
round up[1,3]
3
round_up[0,3]
0
round_up[6,3]
6

Hành vi cho 0 không phải là những gì bạn yêu cầu, nhưng có vẻ phù hợp và hữu ích hơn theo cách này. Nếu bạn muốn làm tròn 0 mặc dù, chức năng sau đây sẽ làm điều đó:

round_up = function[x,factor]{ return x - [x%factor] + [ [x%factor>0 || x==0] && factor];}

round_up[25,3]
27
round up[1,3]
3
round_up[0,3]
3
round_up[6,3]
6

Đã trả lời ngày 4 tháng 4 năm 2012 lúc 19:56Apr 4, 2012 at 19:56

Beauburrierbeauburrierbeauburrier

1.3691 Huy hiệu vàng16 Huy hiệu bạc18 Huy hiệu đồng1 gold badge16 silver badges18 bronze badges

Dựa trên cách tiếp cận của @makram và kết hợp các nhận xét tiếp theo của @Adam, tôi đã sửa đổi ví dụ về toán học gốc.

Number.prototype.mround = function[_mult, _zero] {

  var bias = _zero || false;
  var base = Math.abs[this];
  var mult = Math.abs[_mult];

  if [bias == true] {
    base = Math.round[base / mult] * _mult;
    base = [this 0]
        return Math.ceil[n/3.0] * 3;
    else if[ n < 0]
        return Math.floor[n/3.0] * 3;
    else
        return 3;
0
    if[n > 0]
        return Math.ceil[n/3.0] * 3;
    else if[ n < 0]
        return Math.floor[n/3.0] * 3;
    else
        return 3;
1

Đã trả lời ngày 17 tháng 5 năm 2016 lúc 14:01May 17, 2016 at 14:01

CAK2CAK2CAK2

1.7421 Huy hiệu vàng14 Huy hiệu bạc17 Huy hiệu đồng1 gold badge14 silver badges17 bronze badges

0

Một câu trả lời chung hơn có thể giúp ai đó có vấn đề chung hơn: Nếu bạn muốn làm tròn số thành bội số của một phân số, hãy xem xét sử dụng thư viện. Đây là một trường hợp sử dụng hợp lệ trong GUI trong đó số thập phân được gõ vào đầu vào và ví dụ bạn muốn ép chúng thành bội số 0,25, 0,2, 0,5, v.v. Sau đó, cách tiếp cận ngây thơ sẽ không đưa bạn đi xa:

    if[n > 0]
        return Math.ceil[n/3.0] * 3;
    else if[ n < 0]
        return Math.floor[n/3.0] * 3;
    else
        return 3;
2

Sau nhiều giờ cố gắng viết lên chức năng của riêng tôi và tìm kiếm các gói NPM, tôi đã quyết định rằng Decimal.js đã hoàn thành công việc ngay lập tức. Nó thậm chí còn có một phương thức

    if[n > 0]
        return Math.ceil[n/3.0] * 3;
    else if[ n < 0]
        return Math.floor[n/3.0] * 3;
    else
        return 3;
8 thực hiện chính xác điều đó và bạn có thể chọn làm tròn, xuống hoặc để gần hơn giá trị [mặc định].

    if[n > 0]
        return Math.ceil[n/3.0] * 3;
    else if[ n < 0]
        return Math.floor[n/3.0] * 3;
    else
        return 3;
3

Ví dụ Runkit

Đã trả lời ngày 28 tháng 8 năm 2019 lúc 21:54Aug 28, 2019 at 21:54

Adam Jagoszadam JagoszAdam Jagosz

1.38413 Huy hiệu bạc12 Huy hiệu đồng13 silver badges12 bronze badges

Sử dụng toán tử còn lại [mô đun]:

    if[n > 0]
        return Math.ceil[n/3.0] * 3;
    else if[ n < 0]
        return Math.floor[n/3.0] * 3;
    else
        return 3;
4

Đã trả lời ngày 20 tháng 9 năm 2020 lúc 22:03Sep 20, 2020 at 22:03

Vanowmvanowmvanowm

8.4842 Huy hiệu vàng17 Huy hiệu bạc33 Huy hiệu đồng2 gold badges17 silver badges33 bronze badges

Bằng mã được đưa ra dưới đây, sử dụng có thể thay đổi bất kỳ số nào và bạn có thể tìm thấy bất kỳ bội số nào của bất kỳ số nào

    if[n > 0]
        return Math.ceil[n/3.0] * 3;
    else if[ n < 0]
        return Math.floor[n/3.0] * 3;
    else
        return 3;
5

Đã trả lời ngày 15 tháng 9 lúc 9:10Sep 15 at 9:10

    if[n > 0]
        return Math.ceil[n/3.0] * 3;
    else if[ n < 0]
        return Math.floor[n/3.0] * 3;
    else
        return 3;
6

Đã trả lời ngày 15 tháng 7 năm 2010 lúc 9:45Jul 15, 2010 at 9:45

JamesjamesJames

64.4K14 Huy hiệu vàng153 Huy hiệu bạc191 Huy hiệu đồng14 gold badges153 silver badges191 bronze badges

3

Làm thế nào để bạn làm tròn đến bội số gần nhất của 5 trong JavaScript?

Để làm tròn một số đến 5 gần nhất, hãy gọi hàm Math.Round [], chuyển nó số chia cho 5 và nhân kết quả với 5.call the Math. round[] function, passing it the number divided by 5 and multiply the result by 5 .

Làm cách nào để tìm được bội số gần nhất của một số?

Cho hai số n và x, chúng ta cần tính giá trị nhỏ nhất của x gần nhất với số n.Chúng ta cần tìm một k sao cho x*k là gần nhất với n.Nếu chúng ta làm k = n/x, chúng ta sẽ nhận được giá trị k có thể không dẫn đến tối đa.calculate the smallest value of x that is closest to given number n. We need to find a k such that x*k is closest to n. If we do k = n/x, we get a value of k that may not lead to maximum.

Làm thế nào để bạn làm tròn đến bội số tiếp theo của 5?

Lấy số trong một biến. Nếu nó chia hết cho 5, trả về cùng một số.else chia nó cho 5, lấy giá trị sàn và một lần nữa nhân nó với 5 và thêm 5. If it is divisible by 5, return the same number. Else divide it by 5, take floor value and again multiply it by 5 and add 5 as well.

Làm thế nào để bạn làm tròn đến gần nhất trong JavaScript?

Chúng ta có thể làm tròn đến số nguyên gần nhất, làm tròn hoặc làm tròn ...
vòng [] - Vòng tròn đến số nguyên gần nhất [nếu phân số là 0,5 hoặc lớn hơn - vòng lên].
Sàn [] - Vòng xuống ..
trần [] - vòng lên ..

Bài Viết Liên Quan

Chủ Đề