internet pencereler Android

JavaScript'te sayıları yuvarlama. Javascript - yan - daktilo metni yuvarlama en yakın tamsayıya yuvarlama

Bu makale sayılara, matematiksel operatörlere, bir sayıyı dizeye dönüştürmenin yollarına ve diğer birçok önemli noktaya daha yakından bakacaktır.

Sonlu işlev

isFinite işlevi, bir argümanın sonlu olup olmadığını kontrol etmenizi sağlar.

Yanıt olarak, argüman Infinity, -Infinity, NaN ise veya bu özel sayısal değerlerden birine dönüştürülecekse bu işlev false döndürür. Aksi takdirde, bu işlev true değerini döndürür.

Sonlu (73); // true isFinite (-1/0); // false isFinite (Sonsuz); // false isFinite (NaN); // false isFinite ("Metin"); // YANLIŞ

Genel isFinite işlevine ek olarak, JavaScript'te ayrıca Number.isFinite yöntemi vardır. isFinite'tan farklı olarak, argümanı bir sayıya zorlamaz.

IsFinite ("73"); // true Number.isFinite ("73"); // YANLIŞ

IsNaN işlevi

isNaN işlevi, bir bağımsız değişkenin sayı olup olmadığını veya ona dönüştürülebilir olup olmadığını belirlemek için tasarlanmıştır. Eğer öyleyse, isNaN işlevi false döndürür. Aksi takdirde true döner.

IsNaN (NaN); // true isNaN ("25 piksel"); // doğru, çünkü 20px bir sayı değildirNaN (25.5); // false isNaN ("25.5"); // false isNaN (""); // yanlış, çünkü boşluk veya birkaç boşluk 0'a dönüştürülür isNaN (boş); // yanlış, çünkü null 0'a dönüştürülür isNaN (true); // yanlış, çünkü true, 1 isNaN'ye (yanlış) dönüştürülür; // yanlış, çünkü false 0'a dönüştürür

Bu eylemin typecasting olmadan gerçekleştirilmesi gerekiyorsa Number.isNaN yöntemini kullanın. Bu yöntem, ECMAScript 6'dan beri dile girmiştir.

Bir dizeyi açıkça bir sayıya nasıl dönüştürebilirim?

Aşağıdaki yöntemleri kullanarak bir dizeyi açıkça bir sayıya dönüştürebilirsiniz:

1. Kullanım tekli + operatör değerden önce yerleştirilmelidir.

+ "7.35"; // 7.35 + "metin"; // NaN

Bu yöntem, baştaki ve sondaki boşlukları ve \ n'yi (satır besleme) yok sayar.

+ "7.35"; //7.35 + "7.35 \ n"; //7.35

Bu yöntemi kullanarak boş bir string veya boşluklardan ve \ n'den oluşan bir string'in 0 sayısına çevrilmesine dikkat etmeniz gerekir. Ayrıca boş veri tipini ve boolean değerlerini de bir sayıya çevirir. .

Boş; // 0 + doğru; // 1 + yanlış; // 0 + ""; // 0

2. ayrıştırma işlevi. Bu işlev dönüştürmek için tasarlanmıştır bir tamsayıya argüman... kullanmanın aksine tekli operatör +, bu yöntem, bir dizeyi bir sayıya dönüştürmenize olanak tanır; tüm karakterler sayısal değildir... İlk karakterden başlayarak dizeyi dönüştürmeye başlar. Ve dijital olmayan bir karakterle karşılaştığında, bu fonksiyon çalışmasını durdurur ve ortaya çıkan sayıyı döndürür.

Ayrıştırma ("18 piksel"); // 18 ayrıştırma ("%33.3"); // 33

Bu fonksiyon farklı sayı sistemleriyle (ikili, sekizli, ondalık, onaltılık) çalışabilir. Radix, 2 bağımsız değişken kullanılarak belirtilir.

Ayrıştırma ("18 piksel", 10); // 18 ayrıştırma ("%33,3", 10); // 33 ayrıştırma ("101", 2); // 5 ayrıştırma ("B5", 16); // 181

JavaScript, parseInt işlevine ek olarak Number.parseInt yöntemine sahiptir. Bu yöntem, ayrıştırma işlevinden farklı değildir ve JavaScript'te ECMASCRIPT 2015 belirtimi (6) ile tanıtılmıştır.

3. parseFloat işlevi. ParseFloat, argümanı bir kesire dönüştürmesi dışında parseInt'e benzer.

ParseFloat ("%33,3"); ///33.3

Ayrıca parseFloat işlevi, parseInt'in aksine 2 bağımsız değişkene sahip değildir ve bu nedenle dizeyi her zaman ondalık sayı olarak ele almaya çalışır.

ParseFloat ("3.14"); parseFloat ("314e-2"); parseFloat ("0.0314E + 2");

JavaScript, parseFloat işlevine ek olarak Number.parseFloat yöntemine sahiptir. Bu yöntem, parseFloat işlevinden farklı değildir ve JavaScript'te ECMASCRIPT 2015 belirtimi (6) ile tanıtılmıştır.

Sayıyı dizeye dönüştür

toString yöntemini kullanarak bir sayıyı bir dizeye dönüştürebilirsiniz.

(12.8) .toString(); //"12.8"

toString yöntemi ayrıca, sayının açıkça bir dizeye dönüştürülmesi gerektiğini hesaba katarak sayı sisteminin tabanını belirtmenize de olanak tanır:

(255) .toString (16); // "f"

Bir değişkenin sayı olup olmadığı nasıl kontrol edilir

Aşağıdaki yöntemlerden birini kullanarak bir değişkenin değerinin bir sayı olup olmadığını belirleyebilirsiniz:

1. isNaN ve isFinite işlevlerini kullanma:

// myVar bir değişkendir if (! isNaN (parseFloat (myVar)) && isFinite (parseFloat (myVar))) (// myVar bir sayıdır veya ona dönüştürülebilir);

İşlev olarak:

// fonksiyon isNumeric (değer) (dönüş! isNaN (parseFloat (değer)) && isFinite (parseFloat (değer));) // var myVar = "12px" kullanın; konsol.log (isNumeric (myVar)); // NS

Bu yöntem, belirtilen değerin bir sayı olup olmadığını veya ona dönüştürülebilir olup olmadığını belirlemenizi sağlar. Bu seçenek, boş bir dizeyi, bir boşluk dizesini, null, Infinity, -Infinity, true veya false değerini sayı olarak ele almaz.

2. typeof operatörünü ve isFinite, isNaN işlevlerini kullanarak:

// değerin sayı olup olmadığını kontrol eden fonksiyon isNumber (değer) fonksiyonu (değerin dönüş tipi === "(! LANG: sayı" && isFinite(value) && !isNaN(value); }; // использование функции isNumber isNumber(18); //true // использование функций для проверки текстовых значений isNumber(parseFloat("")); //false isNumber(parseFloat("Infinity")); //false isNumber(parseFloat("12px")); //true !}

Bu fonksiyon, belirtilen değerin Number türünde olup olmadığını ve Infinity, -Infinity ve NaN özel değerlerinden biri olup olmadığını belirler. Eğer öyleyse, bu fonksiyon true değerini döndürür.

3.ECMAScript 6 Number.isInteger (değer) yöntemini kullanma. Bu yöntem, belirtilen değerin bir tamsayı olup olmadığını belirlemenizi sağlar.

Number.isInteger ("20"); // yanlış, çünkü bu yöntem, dizeyi Number.isInteger (20) sayısına çevirmez; // doğru, çünkü verilen değer bir sayıdır

Çift ve tek sayılar

Aşağıdaki işlevleri kullanarak bir sayının çift mi yoksa tek mi olduğunu kontrol edebilirsiniz:

// Eşitlik işlevi için sayıyı kontrol etme işlevi isEven (n) (dönüş n% 2 == 0;) // Teklik işlevi için sayıyı kontrol etme işlevi isOdd (n) (dönüş Math.abs (n% 2) == 1; )

Ancak böyle bir kontrol yapmadan önce, belirtilen değerin bir sayı olduğundan emin olmanız önerilir:

Değer = 20; if (Number.isInteger (değer)) (if (isEven (değer)) (console.log ("Sayı" + değer.toString () + "- çift"));)

Javascript asal sayıları

Javascript kullanarak 2'den 100'e kadar olan asal sayıları gösterdiğimiz bir örneği ele alalım.

// Sayının asal olup olmadığını kontrol eden bir fonksiyon isPrime (değer) (if (isNaN (değer) ||! IsFinite (değer) || değer% 1 || değer)< 2) return false; var max=Math.floor(Math.sqrt(value)); for (var i = 2; i< = max; i++) { if (value%i==0) { return false; } } return true; } // создать массив, который будет содержать простые числа от 2 до 100 var primaryNumber = ; for (var i = 2; i <= 100; i++) { if(isPrime(i)) primaryNumber.push(i); } // вывести в консоль простые числа от 2 до 100 console.log(primaryNumber);

Javascript'te bir sayıyı yuvarlama

JavaScript'te bir kesirli sayıyı bir tamsayı değerine yuvarlamanın çeşitli yolları vardır.

1. Özel olarak tasarlanmış Math.floor, Math.ceil ve Math.round yöntemlerini kullanmak. Math.floor yöntemi, kesirli sayıyı en yakın tam sayıya yuvarlar, yani. sadece kesirli kısmı atar. Math.ceil kesirli bir sayıyı en yakın tam sayıya yuvarlar. Math.round, kesirli kısmın değerine bağlı olarak bir sayıyı yukarı veya aşağı yuvarlar. Kesirli kısım 0,5'ten büyük veya 0,5'e eşitse, o zaman yukarı, aksi takdirde kıvrılma aşağıdır.

Console.log (Math.floor (7.9)); // 7 konsol.log (Math.ceil (7.2)); // 8 konsol.log (Math.round (7.5)); //sekiz

2. toFixed yöntemini kullanma (hassasiyet). Bu yöntem, bir sayının kesirli kısmını belirtilen kesinliğe yuvarlar. Yuvarlama sonucu bir dize olarak döndürülür.

Console.log (7.987'den Sabit (2)); //"7.99"

Sayının belirtilen kesinliğini oluşturmak için yeterli ondalık basamak yoksa, sıfırlarla doldurulur.

Console.log (7.987'den Sabit (5)); //"7.98700"

3. toPrecision yöntemiyle. Bu yöntem, belirtilen kesinlikte bir sayıyı temsil eder. Aynı zamanda, sadece kesirli kısmı değil, aynı zamanda sayının tamamını da tamamlayabilir. Bu yöntem, sonuca bağlı olarak elde edilen sayıyı sabit bir nokta ile veya üstel biçimde temsil edebilir.

Console.log ((1001) .toPrecision (2)); //"1.0e+3"console.log ((1001) .toPrecision (5)); //"1001.0"console.log ((12.4) .toPrecision (1)); // "1e + 1" console.log ((12.4) .toPrecision (2)); // "12" konsol.log ((12.4) .toPrecision (3)); //"12.4"console.log ((12.4) .toPrecision (5)); //"12.400"

4. NOT veya OR mantıksal operatörlerini kullanma.

// çift mantıksal olumsuzlama ile console.log (~~ 7.9); // 7 // sıfırlı mantıksal VEYA kullanarak: console.log (7.9 ^ 0); // 7

Bir sayının tamsayı ve kesirli kısmı

Math.floor() yöntemini ve parseInt() yöntemini kullanarak bir sayının tamsayı kısmını alabilirsiniz:

Console.log (Math.floor (7.21)); // 7 konsol.log (parseInt (7.21)); // 7

Yüzde (%) operatörünü kullanarak bir sayının kesirli kısmını alabilirsiniz. Bu operatör, ilk sayıyı ikinciye bölerek elde edilecek kalanı verir. Bu durumda, 2 sayısı olarak 1 kullanılmalıdır.

Console.log (%7.21 1); // 0.20999999999999996 // 2 ondalık basamağa kadar doğru konsol.log ((%7.21 1) .toSabit (2)); // "0.21"

Ek olarak, kesirli kısım hesaplamalar kullanılarak da elde edilebilir:

Var sayısı = 7.21; var fractionNumber = sayı - Math.floor (Math.abs (sayı)); konsol.log (fractionNumber); // 0.20999999999999996

sayı çift bölünür mü

Yüzde operatörünü kullanarak bir sayının eşit olarak bölünebilir olup olmadığını belirleyebilirsiniz:

Var sayısı = 9; // sayının 3'e bölümünden kalan 0 ise evet, aksi takdirde hayır if (%3 == 0) (console.log ("Sayı" + sayı + "3'e bölünebilir);) başka (konsol .log ("Sayı" + sayı + "3'e bölünemez");)

Numaraları biçimlendirme

JavaScript'te toLocaleString () yöntemi, bir sayının çıktısını bölgesel (işletim sistemi) dil ayarlarıyla eşleşecek şekilde biçimlendirmenize olanak tanır.

Örneğin, varsayılan olarak sistemde yüklü olan bölgesel standartlara göre sayıyı biçimlendirelim:

Var sayısı = 345.46; konsol.log (number.toLocaleString()); // "345.46"

Örneğin, sayıyı Rusya'nın (ru) bölgesel standartlarına göre biçimlendirelim:

Console.log ((108.1) .toLocaleString ("ru-RU")); // "108,1"

Bu yöntem, bir sayıyı para birimi olarak biçimlendirmek için de kullanılabilir:

Console.log ((2540.125) .toLocaleString ("ru-RU", (stil: "para birimi", para birimi: "RUB"))); // "2 540.13 ₽" console.log ((89.3) .toLocaleString ("ru-RU", (stil: "para birimi", para birimi: "USD"))); // "89.30 $" console.log ((2301.99) .toLocaleString ("ru-RU", (stil: "para birimi", para birimi: "EUR"))); // "2,301,99 €"

Bir sayının yüzde olarak gösterimi:

Console.log ((0.45) .toLocaleString ("ru-RU", (stil: "yüzde"))); // "%45"

Sayıyı rakamlara ayırın (useGrouping özelliği):

Console.log ((125452.32) .toLocaleString ("ru-RU", (useGrouping: true))); // "125 452.32"

Ondalık noktadan sonra belirli sayıda basamak (2) içeren bir sayı yazdırın:

Console.log ((1240.4564) .toLocaleString ("ru-RU", (minimumFractionDigits: 2, maximumFractionDigits: 2))); // "1 240.46"

Rakamları karşılaştırma

JavaScript, sayıları karşılaştırmak için şu operatörleri kullanır: == (eşit),! = (Eşit değil),> (büyüktür),< (меньше), >= (büyük veya eşit),<= (меньше или равно).

Örneğin, iki sayıyı karşılaştıralım:

Konsol.log (2> 3); // yanlış konsol.log (5> = 3); // NS

Sayıları kesirli kısımlarla karşılaştırırken bu hesaplamalar sırasında oluşabilecek hataları da hesaba katmak gerekir.

Örneğin, JavaScript'te sayıların toplamı (0,2 + 0,4) 0,6 değildir:

Console.log ((0.2 + 0.4) == 0.6); // YANLIŞ

2. sayı sisteminde tüm hesaplamalar bir bilgisayar veya başka bir elektronik cihaz tarafından yapıldığından hatalar oluşur. Onlar. herhangi bir işlem yapmadan önce, bilgisayar ilk olarak ifadede temsil edilen sayıları 2 sayı sistemine çevirmelidir. Ancak, hiçbir kesirli ondalık sayı, 2 sayı sisteminde tam olarak temsil edilemez.

Örneğin 0.25 10 sayısı tam olarak ikili sisteme çevrilir.

0.125 × 2 = 0.25 | 0 0,25 × 2 = 0,5 | 0 0,5 × 2 = 1 | 1 0.125 10 = 0.001 2

Örneğin, 0,2 10 sayısı yalnızca belirli bir hassasiyetle 2 sistemine dönüştürülebilir:

0,2 × 2 = 0,4 | 0 0,4 × 2 = 0,8 | 0 0,8 × 2 = 1,6 | 1 0,6 × 2 = 1,2 | 1 0,2 × 2 = 0,4 | 0 0,4 × 2 = 0,8 | 0 0,8 × 2 = 1,6 | 1 0,6 × 2 = 1,2 | 1 0,2 × 2 = 0,4 | 0 0,4 × 2 = 0,8 | 0 0,8 × 2 = 1,6 | 1 0,6 × 2 = 1,2 | 1 ... 0.2 10 = 0.001100110011 ... 2

Sonuç olarak, bu hatalar iki sayının toplamının hesaplanmasını ve karşılaştırma sonuçlarını etkileyecektir. Onlar. JavaScript'in aslında bu kaydı şu şekilde göreceği ortaya çıktı:

0.6000000000000001==0.6

Kesirli kısımlı sayıları hesaplarken veya görüntülerken, her zaman yapılması gereken kesinliği belirtmelisiniz.

Örneğin, toFixed() ve toPrecision() yöntemlerini kullanarak 2 ondalık basamağa kadar olan sayıları karşılaştırın:

// yöntem toFixed() konsol.log ((0.2 + 0.4) .toFixed (2) == (0.6) .toSabit (2)); // true // yöntem toPrecision () konsol.log ((0.2 + 0.4) .toPrecision (2) == (0.6) .toPrecision (2)); // NS

Temel matematik işlemleri

JavaScript'te şu matematiksel operatörler bulunur: + (toplama), - (çıkarma), * (çarpma), / (bölme),% (modulo), ++ (1 artırma), - (1 azaltma).

6 + 3 // 9 6-3 // 3 6 * 3 // 18 6/3 // 2 %6 3 // 0, yani. 6: 3 = 2 => 6-3 * 2 => dinlenme (0) %5 2 // 1, yani. 5: 2 = 2 (.5) => 5-2 * 2 => dinlenme (1) %7.3 2 //1.3, yani. 7.3: 2 = 3 (.65) => 7.3-2 * 3 => dinlenme (1.3) // % işlemi sonucunun işareti ilk değerin işaretine eşittir -%9 2.5 //-1.5 , yani 9: 2.5 = 3 (.6) => 9-2.5 * 3 => dinlenme (1,5) -%9 -2,5 //-1.5, yani. 9: 2.5 = 3 (.6) => 9-2.5 * 3 => dinlenme (1,5) -2% 5 // - 2, yani. 2: 5 = 0 (.4) => 2-5 * 0 => dinlenme (2) x = 3; konsol.log (x ++); // 3 yazdırır, y 4 sonra setler konsol.log (x); // 4 x = 3; konsol.log (++ x); // 4'ü ayarlar ve yazdırır x = 5; konsol.log (x--); // 5 yazdırır, y 4 sonra setler konsol.log (x); // 4 x = 5; konsol.log (- x); // 4'ü ve çıktıları ayarlar Ayrıca JavaScript'te birleştirilmiş operatörler bulunur: x + = y (x = x + y), x- = y (x = xy), x * = y (x = x * y), x / = y (x = x / y), %x = y (x = %x y). x = 3; y = 6; x + = y; konsol.log (x); // 9 x = 3; y = 6; x- = y; konsol.log (x); // - 3 x = 3; y = 6; x * = y; konsol.log (x); // 18 x = 3; y = 6; x / = y; konsol.log (x); //0.5 x = 3; y = 6; %x = y; konsol.log (x); // 3

Hesaplamalar genellikle istenen aralıkların dışında kalan sonuçlar üretir. Sonuç olarak, yapmanız gereken JavaScript yuvarlama belirli bir değere.

Rakamlar neden yuvarlanır?

JavaScript tamsayıları saklamaz çünkü değerleri kayan nokta sayıları olarak temsil edilir. Birçok kesir sınırlı sayıda ondalık basamakla temsil edilemez, bu nedenle JavaScript aşağıdaki gibi sonuçlar üretebilir:

0.1 * 0.2; > 0.020000000000000004

Pratikte 2 kentilyonluk bir hatadan bahsettiğimiz için bu bir fark yaratmayacaktır. Ancak bu, para birimi değerlerini, yüzdeleri veya dosya boyutunu temsil eden sayılarla çalışırken sonucu etkileyebilir. Bu nedenle, yapmanız veya belirli bir ondalık basamağa ihtiyacınız var.

Ondalık sayıları yuvarlama

Bir ondalık sayıyı "kırpmak" için toFixed () veya toPrecision () yöntemlerini kullanın. Her ikisi de sonuca dahil edilecek önemli ve ondalık basamak sayısını belirten bir argüman alır:

  • toFixed () için herhangi bir bağımsız değişken belirtilmemişse, varsayılan değer 0'dır, yani ondalık basamak yoktur; argümanın maksimum değeri 20'dir;
  • toPrecision () için herhangi bir bağımsız değişken belirtilmemişse, sayı değişmez.

var randNum = 6.25; randNum.toSabit (); > "6" Math.PI.toPrecision (1); > "3" var randNum = 87.335; randNum.toSabit (2); > "87.33" var randNum = 87.337; randNum.toPrecision (3); > "87,3"

Not

Hem toFixed () hem de toPrecision, bir sayı değil, sonucun yuvarlatılmış bir dize temsilini döndürür. Bu, randNum'a yuvarlatılmış eklemenin tek bir sayı yerine dize bitiştirmeyle sonuçlanacağı anlamına gelir:

konsol.log (randNum + yuvarlatılmış); > "6.256"

JavaScript'in en yakın yüzdeliğe yuvarlanmasını istiyorsanız, parseFloat() kullanın:

var randNum = 6.25; var yuvarlatılmış = parseFloat (randNum.toFixed (1)); konsol.log (yuvarlak); > 6.3

toFixed() ve toPrecision() ayrıca çok sayıda ondalık basamağı kesmek için kullanışlı yöntemlerdir. Bu, para birimlerini temsil eden sayılarla çalışırken yararlıdır:

var bütünNum = 1 var dolarCents = bütünNum.toFixed (2); konsol.log (dolar sent); > "1.00"

Sayıda kesinlik parametresi tarafından belirtilenden daha fazla basamak varsa, toPrecision'ın sonucu bilimsel biçimde döndüreceğini unutmayın:

var num = 123.435 num.toPrecision (2); > "1.2e + 2"

Ondalık kesirleri yuvarlarken hatalardan nasıl kaçınılır

Bazı durumlarda toFixed ve toPrecision uygulaması JavaScript yuvarlama 5, ve daha fazlası için değil:

var numTest = 1.005; numTest.toSabit (2); > 1;

Yukarıdaki örnek 1 değil, 1.01 ile sonuçlanmalıdır. Bu hatadan kaçınmanız gerekiyorsa, üstel sayıları kullanmanızı öneririm:

fonksiyon turu (değer, ondalık sayılar) (dönüş Sayısı (Math.round (değer + "e" + ondalık sayılar) + "e -" + ondalık sayılar);)

Başvuru:

yuvarlak (1.005.2); > 1.01

Yuvarlamadan daha güvenilir bir çözüme ihtiyacınız varsa, şu adreste mevcuttur: MDN.

Epsilon yuvarlama

alternatif yöntem JavaScript'i onda birine yuvarlama ES6'da tanıtıldı ( JavaScript 2015 olarak da bilinir). « makine epsilon»İki kayan noktalı sayıyı karşılaştırırken makul bir hata payı sağlar. Yuvarlama olmadan, karşılaştırmalar aşağıdakine benzer sonuçlar verebilir:

0.1 + 0.2 === 0.3> yanlış

Math.EPSILON, doğru bir karşılaştırma elde etmek için bir işlevde kullanılabilir:

işlev epsEqu (x, y) (Math.abs'yi (x - y) döndürür< Number.EPSILON * Math.max(Math.abs(x), Math.abs(y)); }

İşlev iki argüman alır: biri hesaplamaları içerir, ikincisi beklenen (yuvarlak) sonuçtur. Bu iki parametrenin bir karşılaştırmasını döndürür:

epsEqu (0,1 + 0,2, 0,3)> doğru

Tüm modern tarayıcılar ES6 matematik işlevlerini destekler. Ancak eski tarayıcılarda destek sağlamanız gerekiyorsa, çoklu dolgu kullanmanız gerekir.

Ondalık sayıları kesme

Daha önce sunulan tüm yöntemler, JavaScript'i onda birine yuvarlama... Pozitif bir sayıyı iki ondalık basamağa kesmek için 100 ile çarpın, tekrar kısaltın ve sonucu 100'e bölün:

işlev kesildi (sayı) (dönüş Math.trunc (sayı * 100) / 100;) kesildi (3.1416)> 3.14

Daha esnek bir şeye ihtiyacınız varsa, bitsel operatörü kullanabilirsiniz:

işlev kesildi (num, decimalPlaces) (var numPowerConverter = Math.pow (10, decimalPlaces); dönüş ~~ (num * numPowerConverter) / numPowerConverter;)

Kullanım:

var randInt = 35.874993; kesilmiş (randInt, 3); > 35.874

En yakın sayıya yuvarlama

yürütmek JavaScript tam sayıya yuvarlama, Math.round () tarafından kullanılır:

Math.round (4.3)> 4 Math.round (4.5)> 5

Bunu not et " yarı değerler“.5 gibi yuvarlanır.

En yakın tam sayıya yuvarlama

Aşağı yuvarlamak istiyorsanız Math.floor () yöntemini kullanın:

Math.floor (42.23); > 42 Math.floor (36.93); > 36

Aşağı yuvarlamanın, negatif olanlar da dahil olmak üzere tüm sayılar için bir yönü vardır. Bu, temel seviyesinin altı da dahil olmak üzere sonsuz sayıda katlı bir gökdelen olarak hayal edilebilir ( negatif sayıları temsil eden). 2. ve 3. bodrum katlar arasında asansörde iseniz ( ki bu -2,5 değerine karşılık gelir), Math.floor sizi 3. kata götürecektir:

Math.floor (-2.5); > -3

Bundan kaçınmanız gerekiyorsa, tüm modern tarayıcılarda desteklenen Math.trunc () ile JavaScript Math yuvarlama kullanın (hariç IE / Kenar):

Math.trunc (-41.43); > -41

MDN ayrıca sağlar Eski tarayıcılarda ve IE / Edge'de Math.trunc desteği sağlamak için 3 satırlı çoklu dolgu.

En yakın tam sayıya yuvarlama

Ondalık sayıları yuvarlamak istiyorsanız Math.ceil'i kullanın. Bu yöntem aynı zamanda sonsuz bir kaldırma olarak da düşünülebilir: Math.ceil, sayının negatif veya pozitif olmasına bakılmaksızın sizi her zaman alır:

Math.ceil (42.23); > 43 Math.ceil (36.93); > 37 Math.ceil (-36.93); -36

En yakın kata yuvarla

Bir değeri 5'in en yakın katına yuvarlamanız gerekiyorsa, sayıyı 5'e bölen, yuvarlayan ve ardından sonucu aynı değerle çarpan bir işlev oluşturun:

function roundTo5 (sayı) (Math.round'u döndür (sayı / 5) * 5;)

Kullanım:

roundTo5 (11); > 10

İki basamağa yuvarlamak için JavaScript'e ihtiyacınız varsa, işleve hem bir tohum hem de çokluk iletebilirsiniz:

function roundToMultiple (sayı, çoklu) (Math.round'u döndür (sayı / çoklu) * çoklu;)

İşlevi kullanmak için, yuvarlanacak sayıyı ve çokluğu çağrısına ekleyin:

var initialNumber = 11; var çoklu = 10; roundToMultiple (ilkSayı, çoklu); > 10;

Değerleri yalnızca yukarı veya aşağı yuvarlamak için işlevde yuvarlamayı tavan veya zemin ile değiştirin.

Aralık yakalama

Bazen belirli bir aralıkta olması gereken x değerini almanız gerekir. Örneğin, 1 ile 100 arasında bir değere ihtiyacımız var ama 123 değerini alıyoruz. Bunu düzeltmek için min () ( sayıların en küçüğünü döndürür) ve maksimum ( izin verilen maksimum sayıyı döndürür).

Kullanım:

var lowBound = 1; var highBound = 100; var numInput = 123; var kenetli = Math.max (lowBound, Math.min (numInput, highBound)); konsol.log (kenetlenmiş); > 100;

Number sınıfının bir işlevini veya uzantısını oluşturabilirsiniz.

Selam. Bugün Javascript'teki sütunda, javascript'te kayan noktalı sayılarda ondalık basamak sayısının nasıl ayarlanacağına bakacağız. Örneğin, çıktıda 3 veya yalnızca iki ondalık basamak bırakmanız gerekir.

Sorun: javascript ondalık basamakları

Yani bir görevle karşı karşıyayız: ondalık noktadan önce ve ondalık noktadan sonra sayıların olduğu bir hesaplama sonucu var. Ondalık. Diyelim ki sonuç böyle 1538.989100153. Ancak para çekerken, banknot sayısının ondalık basamağa ve sonra - kopeklerin bulunduğu miktarı yansıtan bir sayı almalısınız.

Bu sorunu çözmenin birkaç yolu vardır.

Çözüm 1: toFixed yöntemini kullanarak javascript ondalık basamakları

toFixed, herhangi bir sayı için geçerli olan, yuvarlama hassasiyetini (yani, ondalık basamak sayısını) parametre olarak alan yerleşik bir javascript yöntemidir.

Var num = 1538.989100153; num_str = num.toSabit (); // say_str = 1538; num_str = num.toSabit (2); //num_str=1538.98; num_str = num.toSabit (5); //num_str=1538.98912;

Bu fonksiyondaki kesinlik parametresi 0'dan az (negatif değerleri kabul etmez) ve 20'den fazla olmamalıdır.

Bir değişken olmadan da yapabilirsiniz, örneğin şöyle:

Num_str = (1538.9891200153) .toSabit (2); //num_str=1538.98;

Çözüm 2: toPrecision yöntemini kullanarak javascript ondalık basamakları

Bu çözüm, aynı yerleşik javascript yöntemini temel alır. Bu yöntemin ayırt edici bir özelliği, girdi olarak alınan parametrenin kesinlik (ondalık noktadan sonraki basamak sayısı) değil, toplam basamak sayısı (ondalık noktadan önce ve sonra) anlamına gelmesidir.

Var num = 1538.989100153; num_str = num.toPrecision (5); //num_str=1538.9; num_str = num.toPrecision (7); //num_str=1538.989;

Ondalık nokta çözümü: javascript ondalık basamak sayısı

Ondalık basamakların tamamen atılması gerekiyorsa, yani kesirli sayıyı bir tam sayıya yuvarlamanız gerekiyorsa, Math sınıfının işlevlerini kullanabilirsiniz: yuvarlak, tavan ve zemin.
Yuvarlak - yukarı veya aşağı yuvarlar (sayıya bağlı olarak). Ondalık noktadan sonraki değer yarıdan fazlaysa yukarı, daha azsa aşağı yuvarlar. Yani, eğer 0,51 - 0,49 - 0 ise 1 olur.

Tavan - İngilizceden. tavan her zaman yukarı yuvarlanır.

Zemin - İngilizceden. zemin her zaman aşağı yuvarlanır.

Var num = 1538.989100153; num_str = Math.round (sayı); // say_str = 1539; num_str = Math.floor (sayı); // say_str = 1538; num_str = Math.ceil (sayı); // say_str = 1539;

Bu kadar. Umarım bu yazı sorunu çözmenize yardımcı olmuştur. Bir şey yolunda gitmediyse - "Bir uzmana soru sorun" yeşil düğmesini kullanarak veya yorumlarda sorular sorun.

Merhaba JavaScript severler. Bu dilin çok sıra dışı olduğunu ve her bölümde kendine has özellikleri ve sıra dışı teknik çözümleri ile öne çıktığını fark etmişsinizdir. Bu nedenle, bugünkü gönderi "JavaScript yuvarlama" konusuna ayrılmıştır.

Şimdiki makaleyi okuduktan sonra sayıları yuvarlamanın neden gerekli olduğunu, js'deki hangi yöntem ve özelliklerin bu işlevi yerine getirdiğini ve ayrıca 0'a bölmenin nasıl öne çıktığını öğreneceksiniz.İlkelerimi değiştirmeden, püf noktalarına örnekler ekleyeceğim. materyal ve her eylemi ayrıntılı olarak açıklayın. Şimdi öğrenmeye başlayalım!

Sayılarla ilgili önemli notlar

İlk olarak, js'de her türlü sayının (kesirler ve tam sayılar) şu tipte olduğunu unutmayın. Sayı... Ayrıca, IEEE-754 standardı olarak da bilinen "çift duyarlık" biçiminde depolandıkları için hepsi 64 bittir.

Sayısal değişkenler olağan şekilde oluşturulur:

var hissiz = 35; // doğal sayı

var drob = 0.93; // ondalık gösterim

var uyuşma16 = 0xFF; // onaltılık sayı sistemi

Diğer sayısal gösterimleri de destekler. Böylece, yine de kayan noktalı sayılar oluşturabilirsiniz (bunlara bazen "bilimsel biçimde sayılar" da denir).

Çok ilginç bir yöntem için destek var toLocaleString (), tüm sayısal parametreleri ECMA 402'de belirtilen özelliklere göre biçimlendirir. Bu sayede büyük sayılar, telefon numaraları, para birimleri ve hatta yüzdeler iletişim kutusunda güzel bir şekilde görüntülenir.

var sayı = 714000.80;

uyarı (num.toLocaleString());

Number türündeki öğelerle çalışmak için, tüm küresel bir nesneye, adı şu şekilde olan bir dizi her türlü matematiksel işlev sağlandı. Matematik.

Ek olarak, sayısal değerleri tam sayılara, ondalıklara, yüzdeliklere vb. Yuvarlayan başka yöntemler de vardır. Hepsini daha ayrıntılı olarak ele alalım.

Büyük ve güçlü Matematik

Global Math nesnesi, çok çeşitli matematiksel ve trigonometrik işlevler içerir. Bu çok kullanışlı bir nesnedir ve genellikle geliştiricilere dijital verilerle çalışırken yardımcı olur.

Diğer platformlarda Math için analojiler var. Örneğin Java ve C# gibi popüler dillerde Math, aynı standart işlevlerin tümünü destekleyen bir sınıftır. Gördüğünüz gibi, bu enstrüman gerçekten harika ve güçlü.

Şimdi belirli yuvarlama yöntemlerini gözden geçirmek ve onlar hakkında ayrıntılı olarak konuşmak istiyorum.

Matematik.kat ()

ile başlayacağım Matematik.zemin... Yöntemin adına dikkat edin. Mantıksal olarak, yuvarlamadan bahsettiğimiz ve "zemin" kelimesinin gerçek çevirisinin "zemin" anlamına geldiği için, bu aracın işlenmiş değerleri aşağı doğru yuvarlayacağı açıktır.

Bu fonksiyon kullanılarak işlenen numaranın aynı kalması da mümkündür. Bunun nedeni, yuvarlamanın katı olmayan bir eşitsizliğe göre yapılmasıdır (<=). Таким образом, при отработке этой строчки кода:

uyarı (Math.floor (4.5));

cevap 4 numara olacak.

Matematik.ceil ()

Yine isme bakın (bu şekilde malzeme daha hızlı emilir). Bilmiyorsa tavan tavan demektir. Bu, sayısal verilerin gevşek bir eşitsizlik (> =) kullanılarak yuvarlanacağı anlamına gelir.

uyarı (Math.ceil (4.5));

Tahmin edebileceğiniz gibi, cevap 5 numara olacak.

Matematik turu ()

Bu yöntem, kesirli sayıyı en yakın tam sayıya yuvarlar. Bu nedenle, kesirli kısım 0 ile 0,5 aralığındaysa (dahil değil), aşağı yuvarlama gerçekleşir. Kesirli kısım 0,5 dahil bir sonraki tamsayı aralığındaysa, daha büyük tam sayıya yuvarlanır.

uyarı (Math.round (4.5));

Umarım herkes doğru cevabı düşünmüştür veya söylemiştir - 5.

Birkaç yöntem daha

JavaScript'te ayrıca sayısal gösterimlerin yuvarlanmasıyla ilgilenen 2 yöntem daha vardır. Ancak, biraz farklıdırlar.

Gibi araçlar hakkında olacak tamir edildi () ve toPrecision ()... Sadece yuvarlamadan değil, belirli işaretlere olan doğruluğundan da sorumludurlar. Daha derine inelim.

tamir edildi ()

Bu mekanizmayı kullanarak, değerin kaç ondalık basamağa yuvarlanacağını belirleyebilirsiniz. Yöntem, sonucu bir dize olarak döndürür. Aşağıda üç farklı varyantı olan bir varyant ekledim. Aldığınız cevapları analiz edin.

var sayı = 5656.9393;

belge.writeln (sayıdan Sabit ()); // 5657

belge.writeln (Sayıdan Sabit (2)); // 5656.94

belge.writeln (Sayıya Sabit (7)); // 5656.9393000

Gördüğünüz gibi, bir argüman belirtmezseniz, toFixed ()) kesirli değeri yuvarlayacaktır. bütüne sayılar. Üçüncü satır yuvarlanır 2 karaktere kadar, ve dördüncüsü - "7" parametresi nedeniyle üç tane daha 0 eklendi.

toPrecision ()

Bu yöntem biraz farklı bir şekilde çalışır. Argüman yerine boş bir alan bırakabilir veya bir parametre ayarlayabilirsiniz. Ancak, ikincisi, virgülü yok sayarak sayıları belirtilen basamak sayısına yuvarlar. İşte önceki örnekten yeniden yazılan programın sonuçları:

var sayı = 5656.9393;

belge.writeln (num.toPrecision()); // 5656.9393

document.writeln (num.toPrecision (2)); // 5.7e + 3

document.writeln (num.toPrecision (7)); // 5656.939

js'de 0'a bölme özelliği

Matematik derslerinden bildiğiniz gibi sıfıra bölemezsiniz. Bu kural, programlama dillerinin yaratıcılarının çoğu tarafından temel alınmıştır. Bu nedenle, sıfıra bölündüğünde tüm programlar bir hata üretir.

Ancak JavaScript burada da kendini farklılaştırmıştır. Bu nedenle, böyle bir işlemin yürütülmesi sırasında hiçbir hata mesajı görünmez ... çünkü böyle bir işlem geri döner "Sonsuzluk"!

Neden böyle? Aynı matematik bilimlerinden bildiğiniz gibi, bölen ne kadar küçükse sayı o kadar büyüktür. Bu nedenle, bu prototip odaklı dilin yaratıcıları, şablonları terk etmeye ve kendi yollarına gitmeye karar verdiler.

Infinity'nin değeriyle ilk karşılaşanlar için aşağıda özelliklerini anlattım.

Sonsuzluk - sonsuzluk anlamına gelir ve tamamen matematiksel işaret ∞'ye karşılık gelir.

Negatif olabilir. Aritmetik operatörlerle çalışmak için tüm standart kurallar da korunur.

uyarı (12/0); // Sonsuzluk

uyarı (12.34 / 0); // Sonsuzluk

uyarı (-3 / 0); // -Sonsuz

Bu konuda, belki de bitireceğim. Yayını beğendiyseniz, bloguma abone olduğunuzdan emin olun. İlginç makalelere bağlantı vererek açgözlü olmayın ve arkadaşlarınızla paylaşın. Güle güle!