Yuvarlama

Sayısal bir değer için "yuvarlama" kelimesi, yaklaşık olarak eşit olan ancak daha kısa, daha basit veya daha açık bir biçime sahip başka bir değerle değiştirilmesi anlamına gelir. Örneğin, 23,74 ABD doları 24 ABD dolarına yuvarlanabilir veya 312/937 kesri 1/3'e yuvarlanabilir veya 2 {\displaystyle {\sqrt {2}}{\displaystyle {\sqrt {2}}} ifadesi 1,41 olarak alınabilir.

Yuvarlama genellikle yazması ve işlemesi orijinalinden daha kolay bir değer elde etmek için bilerek yapılır. Hesaplanan bir sayının doğruluğunu belirtmek için de yapılabilir; örneğin, 123.456 olarak hesaplanan ancak yalnızca birkaç yüz birim içinde doğru olduğu bilinen bir miktar "yaklaşık 123.500" olarak daha iyi ifade edilir.

Öte yandan, yuvarlama işlemi sonuçta bir miktar yuvarlama hatası ortaya çıkarabilir. Yuvarlama, özellikle tamsayı veya sabit nokta aritmetiğinde iki sayıyı bölerken; karekök, logaritma ve sinüs gibi matematiksel fonksiyonları hesaplarken veya sabit sayıda anlamlı basamağa sahip bir kayan nokta gösterimi kullanırken birçok hesaplamada neredeyse kaçınılmazdır. Bir dizi hesaplamada, bu yuvarlama hataları genellikle birikir ve bazı "kötü koşullu" durumlarda sonucu anlamsız hale getirebilir.

Transandantal matematiksel fonksiyonların doğru bir şekilde yuvarlanması zordur çünkü yukarı mı yoksa aşağı mı yuvarlanacağına karar vermek için hesaplanması gereken ekstra basamak sayısı önceden bilinemez. Bu sorun "tablo yapıcının ikilemi" olarak bilinir (aşağıda).

Yuvarlama, fiziksel büyüklüklerin sayılarla veya dijital sinyallerle kodlanması gerektiğinde ortaya çıkan niceleme ile birçok benzerliğe sahiptir.

Yuvarlama türleri

Tipik yuvarlama sorunları şunlardır:

  • irrasyonel bir sayının bir kesre yaklaştırılması, örneğin π'nin 22/7'ye yaklaştırılması;
  • periyodik ondalık açılımı olan bir kesri sonlu bir ondalık kesre yaklaştırmak, örneğin 5/3 ile 1,6667;
  • Rasyonel bir sayının pay ve paydası daha küçük olan bir kesirle değiştirilmesi, örneğin 3122/9417'nin 1/3 ile değiştirilmesi;
  • Kesirli bir ondalık sayının daha az basamaklı bir sayı ile değiştirilmesi, örneğin 2,1784 doların 2,18 dolar ile değiştirilmesi;
  • ondalık bir tam sayının daha fazla sonda sıfır olan bir tam sayı ile değiştirilmesi, örneğin 23.217 kişinin 23.200 kişi ile değiştirilmesi; veya genel olarak,
  • bir değerin belirli bir miktarın katlarıyla değiştirilmesi, örneğin 27,2 saniyenin 30 saniye ile değiştirilmesi (15'in katı).

Belirli bir artışa yuvarlama

En yaygın yuvarlama türü bir tamsayıya yuvarlamaktır; ya da daha genel olarak, bir artışın tamsayı katına - saniyenin onda birine, bir doların yüzde birine, 1/2 ya da 1/8 inçin tam katlarına, düzinelerce ya da binlerce tam sayıya vb. yuvarlamak gibi.

Genel olarak, bir x sayısını belirli bir m artışının katlarına yuvarlamak aşağıdaki adımları gerektirir:

  1. X'i m'ye bölün, sonuç y olsun;
  2. y'yi bir tamsayı değerine yuvarlayın, q olarak adlandırın;
  3. Yuvarlatılmış z değerini elde etmek için q ile m'yi çarpın.

z = r o u n d ( x , m ) = r o u n d ( x / m ) ⋅ m {\displaystyle z=\mathrm {round} (x,m)=\mathrm {round} (x/m)\cdot m\,} {\displaystyle z=\mathrm {round} (x,m)=\mathrm {round} (x/m)\cdot m\,}

Örneğin, x = 2,1784 doları tam kuruşa (yani 0,01'in katına) yuvarlamak, y = x/m = 2,1784/0,01 = 217,84'ü hesaplamayı, ardından y'yi q = 218 tam sayısına yuvarlamayı ve son olarak z = q×m = 218×0,01 = 2,18'i hesaplamayı gerektirir.

Önceden belirlenmiş sayıda anlamlı basamağa yuvarlama yaparken, m artışı yuvarlanacak sayının (veya yuvarlanan sonucun) büyüklüğüne bağlıdır.

Artış m normalde sayıları temsil etmek için kullanılan rakam sisteminde sonlu bir kesirdir. İnsanlara gösterim için bu genellikle ondalık sayı sistemi anlamına gelir (yani m, 1/1000 veya 25/100 gibi 10'un kuvveti ile çarpılan bir tam sayıdır). Dijital bilgisayarlarda saklanan ara değerler için bu genellikle ikili sayı sistemi anlamına gelir (m, 2'nin kuvveti ile çarpılan bir tam sayıdır).

Rastgele bir gerçek değerden bir tamsayı döndüren soyut tek argümanlı "round()" fonksiyonu, tamsayıya yuvarlama bölümünde sunulan en az bir düzine farklı somut tanıma sahiptir. Soyut iki argümanlı "round()" fonksiyonu burada resmi olarak tanımlanmıştır, ancak birçok durumda artış için örtük m = 1 değeri ile kullanılır ve daha sonra aynı düzine farklı somut tanımla eşdeğer soyut tek argümanlı fonksiyona indirgenir.

Tam sayıya yuvarlama

Yuvarlamanın en temel şekli, rastgele bir sayıyı bir tamsayı ile değiştirmektir. Aşağıdaki tüm yuvarlama modları, önceki bölümlerde sunulan ve kullanılan soyut tek argümanlı "round()" fonksiyonunun somut uygulamalarıdır.

Bir y sayısını bir q tam sayısına yuvarlamanın birçok yolu vardır. En yaygın olanları şunlardır

  • aşağı yuvarlayın (veya tabanı alın veya eksi sonsuza doğru yuvarlayın): q, y'yi aşmayan en büyük tamsayıdır.

q = f l o o r ( y ) = ⌊ y ⌋ = - ⌈ - y ⌉ {\displaystyle q=\mathrm {floor} (y)=\left\lfloor y\right\rfloor =-\left\lceil -y\right\rceil \,} {\displaystyle q=\mathrm {floor} (y)=\left\lfloor y\right\rfloor =-\left\lceil -y\right\rceil \,}

  • yukarı yuvarlayın (veya tavanı alın veya artı sonsuza doğru yuvarlayın): q, y'den küçük olmayan en küçük tamsayıdır.

q = c e i l ( y ) = ⌈ y ⌉ = - ⌊ - y ⌋ {\displaystyle q=\mathrm {ceil} (y)=\left\lceil y\right\rceil =-\left\lfloor -y\right\rfloor \,} {\displaystyle q=\mathrm {ceil} (y)=\left\lceil y\right\rceil =-\left\lfloor -y\right\rfloor \,}

  • sıfıra doğru yuvarlama (veya kesme veya sonsuzdan uzağa yuvarlama): q, kesir basamakları olmadan y'nin tam sayı kısmıdır.

q = t r u n c a t e ( y ) = sgn ( y ) ⌊ | y | ⌋ = - sgn ( y ) ⌈ - | y | ⌉ {\displaystyle q=\mathrm {truncate} (y)=\operatorname {sgn}(y)\left\lfloor \left|y\right|\right\rfloor =-\operatorname {sgn}(y)\left\lceil -\left|y\right|\right\rceil \,} {\displaystyle q=\mathrm {truncate} (y)=\operatorname {sgn}(y)\left\lfloor \left|y\right|\right\rfloor =-\operatorname {sgn}(y)\left\lceil -\left|y\right|\right\rceil \,}

  • sıfırdan uzağa yuvarlama (veya sonsuza doğru yuvarlama): y bir tamsayı ise, q y'dir; aksi takdirde q, 0'a en yakın olan ve y'nin 0 ile q arasında olduğu tamsayıdır.

q = sgn ( y ) ⌈ | y | ⌉ = - sgn ( y ) ⌊ - | y | ⌋ {\displaystyle q=\operatorname {sgn}(y)\left\lceil \left|y\right|\right\rceil =-\operatorname {sgn}(y)\left\lfloor -\left|y\right|\right\rfloor \,} {\displaystyle q=\operatorname {sgn}(y)\left\lceil \left|y\right|\right\rceil =-\operatorname {sgn}(y)\left\lfloor -\left|y\right|\right\rfloor \,}

  • en yakına yuvarla: q, y'ye en yakın tamsayıdır (eşitlik bozma kuralları için aşağıya bakın).

İlk dört yöntem yönlendirilmiş yuvarlama olarak adlandırılır, çünkü orijinal y sayısından yuvarlanmış q değerine olan yer değiştirmelerin tümü aynı sınırlayıcı değere (0, +∞ veya -∞) doğru veya ondan uzağa yönlendirilir.

Eğer y pozitif ise, aşağı yuvarlama sıfıra doğru yuvarlama ile aynıdır ve yukarı yuvarlama sıfırdan uzağa yuvarlama ile aynıdır. Eğer y negatif ise, aşağı yuvarlama sıfırdan uzağa yuvarlama ile aynıdır ve yukarı yuvarlama sıfıra doğru yuvarlama ile aynıdır. Her durumda, y tamsayı ise q sadece y'dir. Aşağıdaki tabloda bu yuvarlama yöntemleri gösterilmektedir:

y

rounddown
(-∞'a doğru)

toparlama
(+∞'a doğru)

sıfıra doğru yuvarla


sıfırdan dönüş

roundtonearest

+23.67

+23

+24

+23

+24

+24

+23.50

+23

+24

+23

+24

+23 veya +24

+23.35

+23

+24

+23

+24

+23

+23.00

+23

+23

+23

+23

+23

0

0

0

0

0

0

-23.00

-23

-23

-23

-23

-23

-23.35

-24

-23

-23

-24

-23

-23.50

-24

-23

-23

-24

-23 veya -24

-23.67

-24

-23

-23

-24

-24

Birçok hesaplamanın sırayla yapıldığı durumlarda, yuvarlama yönteminin seçimi sonuç üzerinde çok önemli bir etkiye sahip olabilir. Ünlü bir örnek, 1982 yılında Vancouver Menkul Kıymetler Borsası tarafından oluşturulan yeni bir endeksle ilgilidir. Başlangıçta 1000.000 olarak belirlenmiş ve 22 ay sonra yaklaşık 520'ye düşmüştür - oysa bu dönemde hisse senedi fiyatları genel olarak artmıştır. Sorun, endeksin her gün binlerce kez yeniden hesaplanmasından ve yuvarlama hatalarının birikmesine neden olacak şekilde her zaman 3 ondalık basamağa yuvarlanmasından kaynaklanıyordu. Daha iyi bir yuvarlama ile yeniden hesaplandığında aynı dönemin sonunda 1098.892 endeks değeri elde edilmiştir.

Eşitlik bozma

Bir y sayısını en yakın tamsayıya yuvarlamak, y'nin iki tamsayı arasında tam olarak yarı yolda olduğu, yani y'nin kesir kısmının tam olarak 0,5 olduğu durumlar için bazı eşitlik bozma kuralları gerektirir.

Yarısını yukarı yuvarla

Yarıyı yukarı yuvarlama (veya yarıyı artı sonsuza doğru yuvarlama) olarak adlandırılan aşağıdaki eşitlik bozma kuralı birçok disiplinde yaygın olarak kullanılmaktadır. Yani, yarım y değerleri her zaman yukarı yuvarlanır.

  • Eğer y'nin kesri tam olarak 0,5 ise, q = y + 0,5 olur.

q = ⌊ y + 0.5 ⌋ = - ⌈ - y - 0.5 ⌉ {\displaystyle q=\left\lfloor y+0.5\right\rfloor =-\left\lceil -y-0.5\right\rceil \,} {\displaystyle q=\left\lfloor y+0.5\right\rfloor =-\left\lceil -y-0.5\right\rceil \,}

Örneğin, bu kurala göre 23,5 değeri 24'e yuvarlanır, ancak -23,5 değeri -23'e yuvarlanır.

Bu, genellikle ABD ilköğretim matematik sınıflarında öğretilen iki kuraldan biridir. []

Eğer 0,5'lik kesirler olmasaydı, en yakına yuvarlama yönteminin getirdiği yuvarlama hataları oldukça simetrik olurdu: yukarı yuvarlanan her kesir için (örneğin 0,268), aynı miktarda aşağı yuvarlanan tamamlayıcı bir kesir (yani 0,732) vardır. Rastgele kesirli parçalara sahip büyük bir sayı kümesi yuvarlanırken, bu yuvarlama hataları istatistiksel olarak birbirini telafi edecek ve yuvarlanan sayıların beklenen (ortalama) değeri orijinal sayıların beklenen değerine eşit olacaktır.

Ancak, tam olarak 0,5 olan kesirler her zaman yukarı yuvarlandığından, yarı yarıya eşitlik bozma kuralı simetrik değildir. Bu asimetri, yuvarlama hatalarında pozitif bir önyargıya neden olur. Örneğin, y kesri rastgele üç ondalık basamaktan oluşuyorsa, q'nun beklenen değeri y'nin beklenen değerinden 0,0005 daha yüksek olacaktır. Bu nedenle, yarısını yukarı yuvarla kuralı ile en yakın yuvarlama (belirsiz bir şekilde) asimetrik yuvarlama olarak da bilinir.

0,5'e yuvarlamanın bir nedeni de sadece bir rakamın incelenmesi gerekmesidir. Örneğin 17.50000... görüldüğünde, ilk üç rakam olan 17.5, rakamın 18'e yuvarlanacağını belirler. Eğer tersi bir kural kullanılsaydı (yarı yarıya aşağı yuvarlama), değerin tam olarak 17,5 olup olmadığını belirlemek için tüm sıfır ondalık basamakların incelenmesi gerekirdi.

Yarısı aşağı yuvarlayın

Ayrıca, daha yaygın olan yarıyı yukarı yuvarlama yerine yarıyı aşağı yuvarlama (veya eksi sonsuza doğru yarıyı yuvarlama) da kullanılabilir (yarıyı yukarı yuvarlama yöntemi yaygın bir kuraldır, ancak bir kuraldan başka bir şey değildir).

  • Eğer y'nin kesri tam olarak 0,5 ise, q = y - 0,5 olur.

q = ⌈ y - 0,5 ⌉ = - ⌊ - y + 0,5 ⌋ {\displaystyle q=\left\lceil y-0,5\right\rceil =-\left\lfloor -y+0,5\right\rfloor \,} {\displaystyle q=\left\lceil y-0.5\right\rceil =-\left\lfloor -y+0.5\right\rfloor \,}

Örneğin, 23,5 değeri 23'e ve -23,5 değeri -24'e yuvarlanır.

Tam olarak 0,5 olan kesirler her zaman aşağı yuvarlandığından, yarı yarıya eşitlik bozma kuralı simetrik değildir. Bu asimetri, yuvarlama hatalarında negatif bir önyargıya neden olur. Örneğin, y kesri rastgele üç ondalık basamaktan oluşuyorsa, q'nun beklenen değeri y'nin beklenen değerinden 0,0005 daha düşük olacaktır. Bu nedenle, yarı yarıya aşağı yuvarlama kuralı ile en yakın yuvarlama (belirsiz bir şekilde) asimetrik yuvarlama olarak da bilinir.

Sıfırdan yarım uzağa yuvarlayın

Yaygın olarak öğretilen ve kullanılan diğer eşitlik bozma yöntemi, sıfırdan uzağa yuvarlak yarı (veya sonsuza doğru yuvarlak yarı) yöntemidir:

  • Eğer y'nin kesri tam olarak 0,5 ise, y pozitif ise q = y + 0,5 ve y negatif ise q = y - 0,5 olur.

q = sgn ( y ) ⌊ | y | + 0,5 ⌋ = - sgn ( y ) ⌈ - | y | - 0,5 ⌉ {\displaystyle q=\operatorname {sgn}(y)\left\lfloor \left|y\right|+0.5\right\rfloor =-\operatorname {sgn}(y)\left\lceil -\left|y\right|-0.5\right\rceil \,} {\displaystyle q=\operatorname {sgn}(y)\left\lfloor \left|y\right|+0.5\right\rfloor =-\operatorname {sgn}(y)\left\lceil -\left|y\right|-0.5\right\rceil \,}

Örneğin, 23,5 24'e yuvarlanır ve -23,5 -24'e yuvarlanır.

Bu yöntem pozitif ve negatif değerleri simetrik olarak ele alır ve bu nedenle orijinal sayıların eşit olasılıkla pozitif veya negatif olması durumunda genel önyargıdan arındırılmıştır. Ancak bu kural yine de pozitif sayılar için pozitif, negatif sayılar için negatif bir yanlılık yaratacaktır.

Genellikle para birimi dönüşümleri ve fiyat yuvarlamaları için kullanılır (tutar ilk olarak para biriminin en küçük anlamlı alt bölümüne dönüştürüldüğünde, örneğin bir avronun senti), çünkü ek hassas rakamlardan veya tutarın işaretinden bağımsız olarak sadece ilk kesirli rakamı dikkate alarak açıklamak kolaydır (tutarın ödeyeni ve alıcısı arasında kesin eşdeğerlik için).

Yarısını sıfıra doğru yuvarlayın

Ayrıca, daha yaygın olan sıfırdan uzağa yuvarlama yönteminin aksine, sıfıra doğru yarısını yuvarlayabilir (veya sonsuzdan uzağa yarısını yuvarlayabilir) (sıfırdan uzağa yarısını yuvarlama yöntemi yaygın bir gelenektir, ancak bir gelenekten başka bir şey değildir).

  • Eğer y'nin kesri tam olarak 0,5 ise, y pozitif ise q = y - 0,5 ve y negatif ise q = y + 0,5 olur.

q = sgn ( y ) ⌈ | y | - 0,5 ⌉ = - sgn ( y ) ⌊ - | y | + 0,5 ⌋ {\displaystyle q=\operatorname {sgn}(y)\left\lceil \left|y\right|-0.5\right\rceil =-\operatorname {sgn}(y)\left\lfloor -\left|y\right|+0.5\right\rfloor \,} {\displaystyle q=\operatorname {sgn}(y)\left\lceil \left|y\right|-0.5\right\rceil =-\operatorname {sgn}(y)\left\lfloor -\left|y\right|+0.5\right\rfloor \,}

Örneğin, 23,5 değeri 23'e ve -23,5 değeri -23'e yuvarlanır.

Bu yöntem aynı zamanda pozitif ve negatif değerleri simetrik olarak ele alır ve bu nedenle orijinal sayıların eşit olasılıkla pozitif veya negatif olması durumunda genel önyargıdan arındırılmıştır. Ancak bu kural yine de pozitif sayılar için negatif, negatif sayılar için pozitif bir yanlılık yaratacaktır.

Yarısını çift olarak yuvarlayın

Daha az taraflı olan bir eşitlik bozma kuralı da yarı yarıya eşitliktir, yani

  • Eğer y'nin kesri 0,5 ise, q y'ye en yakın çift tam sayıdır.

Böylece, örneğin, +23,5 +24 olur, +22,5 +22 olur, -22,5 -22 olur ve -23,5 -24 olur.

Bu yöntem aynı zamanda pozitif ve negatif değerleri simetrik olarak ele alır ve bu nedenle orijinal sayıların eşit olasılıkla pozitif veya negatif olması durumunda genel önyargıdan arındırılmıştır. Buna ek olarak, y değerlerinin çoğu makul dağılımı için, yuvarlanan sayıların beklenen (ortalama) değeri, orijinal sayıların tümü pozitif (veya tümü negatif) olsa bile, esasen orijinal sayılarınkiyle aynıdır. Ancak bu kural yine de çift sayılar (sıfır dahil) için pozitif, tek sayılar için negatif bir sapma yaratacaktır.

En yakın yuvarlama yönteminin bu çeşidine yansız yuvarlama (belirsiz ve biraz da kötü niyetli olarak), yakınsak yuvarlama, istatistikçi yuvarlaması, Hollanda yuvarlaması, Gauss yuvarlaması veya bankacı yuvarlaması da denir. Bu, defter tutmada yaygın olarak kullanılır.

Bu, IEEE 754 hesaplama fonksiyonları ve operatörlerinde kullanılan varsayılan yuvarlama modudur.

Yarısını teke yuvarlayın

Yarı yarıya eşitliğe çok benzeyen bir başka eşitlik bozma kuralı, yani

  • Eğer y'nin kesri 0,5 ise, q y'ye en yakın tek tam sayıdır.

Böylece, örneğin, +22,5 +23 olur, +21,5 +21 olur, -21,5 -21 olur ve -22,5 -23 olur.

Bu yöntem aynı zamanda pozitif ve negatif değerleri simetrik olarak ele alır ve bu nedenle orijinal sayıların eşit olasılıkla pozitif veya negatif olması durumunda genel önyargıdan arındırılmıştır. Buna ek olarak, y değerlerinin çoğu makul dağılımı için, yuvarlanan sayıların beklenen (ortalama) değeri, orijinal sayıların tümü pozitif (veya tümü negatif) olsa bile, esasen orijinal sayılarınkiyle aynıdır. Ancak bu kural yine de çift sayılar (sıfır dahil) için negatif, tek sayılar için ise pozitif bir sapma yaratacaktır.

Bu varyant, 0,5 veya -0,5'i sıfıra yuvarlamaktan kaçınmak veya kayan nokta olarak temsil edilen sayıların ölçeğini artırmaktan kaçınmak (ölçekleme üssü için sınırlı aralıklarla), böylece sonsuz olmayan bir sayının sonsuza yuvarlanması veya küçük bir denormal değerin sıfır olmayan normal bir değere yuvarlanması (bunlar yarıya çift yuvarlama modunda meydana gelebilir) gibi durumlar dışında çoğu hesaplamada neredeyse hiç kullanılmaz. Etkili bir şekilde, bu mod mümkün olduğunda aralık dışı sonuçlardan kaçınarak mevcut bağ sayıları ölçeğini korumayı tercih eder.

Stokastik yuvarlama

Bir diğer tarafsız eşitlik bozma yöntemi de stokastik yuvarlamadır:

  • Eğer y'nin kesirli kısmı 0,5 ise, eşit olasılıkla y + 0,5 ve y - 0,5 arasından rastgele q'yu seçin.

Yuvarlağın yarısından çiftine gibi, bu kural da genel olarak önyargısızdır; ancak çift ve tek q değerleri arasında da adildir. Öte yandan, sonuca rastgele bir bileşen ekler; aynı veri üzerinde aynı hesaplamayı iki kez yapmak iki farklı sonuç verebilir. Ayrıca, insanlar (bilgisayarlar veya şans cihazları yerine) hangi yönde yuvarlama yapılacağına "rastgele" karar veriyorsa, bilinçsiz önyargıya açıktır.

Dönüşümlü eşitlik bozma

Çoğundan daha belirsiz olan bir yöntem, yarısını dönüşümlü olarak yuvarlamaktır.

  • Kesirli kısım 0,5 ise, dönüşümlü olarak yukarı ve aşağı yuvarlayın: 0,5 kesirli kısmın ilk oluşumu için yukarı yuvarlayın; ikinci oluşumu için aşağı yuvarlayın; bu şekilde devam edin.

Bu, 0,5 kesirli parçaların etkili bir şekilde numaralandırılabilmesi durumunda sonucun rastgele bileşenini bastırır. Ancak, toplam oluşum sayısı tek ise, ilk oluşuma atanan yuvarlama yönüne göre yine de pozitif veya negatif bir yanlılık ortaya çıkarabilir.

Basit dithering

Bazı bağlamlarda, yukarıdaki tüm yuvarlama yöntemleri tatmin edici olmayabilir. Örneğin, y'nin bir ses sinyalinin doğru bir ölçümü olduğunu ve depolama veya iletim maliyetlerini azaltmak için q tam sayısına yuvarlandığını varsayalım. Eğer y zamanla yavaşça değişiyorsa, yukarıdaki yuvarlama yöntemlerinden herhangi biri q'nun uzun aralıklarla tamamen sabit kalmasına ve ±1'lik ani sıçramalarla ayrılmasına neden olacaktır. q sinyali oynatıldığında, bu adımlar çok rahatsız edici bir gürültü olarak duyulacak ve orijinal sinyalin iki tamsayı değeri arasındaki tüm değişimleri tamamen kaybolacaktır.

Bu sorundan kaçınmanın bir yolu, her y değerini kesrine eşit olasılıkla yukarı doğru yuvarlamak ve bu olasılığın tamamlayıcısı ile aşağı doğru yuvarlamaktır. Örneğin, 23,17 sayısı 0,17 olasılıkla 24'e yukarı yuvarlanır ve 1 - 0,17 = 0,83 olasılıkla 23'e aşağı yuvarlanır. (Bu, y + s'yi aşağı yuvarlamaya eşdeğerdir; burada s, 0 ile 1 arasında eşit olarak dağıtılmış rastgele bir sayıdır). Dithering olarak bilinen bu özel yuvarlama ile ani adımların yerini daha az sakıncalı bir gürültü alır ve orijinal sinyaldeki küçük değişimler bile bir dereceye kadar korunur. Eşitlik bozmaya yönelik stokastik yaklaşım gibi, titremenin de bir önyargısı yoktur: tüm kesir değerleri eşit olasılığa sahipse, belirli bir miktarda yukarı yuvarlama, aynı miktarda aşağı yuvarlama kadar olasıdır; ve aynı şey birkaç yuvarlanmış sayının toplamı için de geçerlidir. Öte yandan, titreme, sonuca stokastik eşitlik bozma işleminden çok daha büyük bir rastgele bileşen ekler.

Daha açık bir ifadeyle, her bir karelenmiş sayı için yuvarlama hatası, ortalama değeri sıfır olan, ancak standart sapması 1 / 12 ≈ 0,2886 {\displaystyle 1/{\sqrt {12}}\approx 0,2886} olan düzgün dağılımlı bir rastgele değişken olacaktır. {\displaystyle 1/{\sqrt {12}}\approx 0.2886}Bu, basit tahmin yöntemleriyle 1/2 standart sapmadan daha iyidir, ancak daha basit stokastik yöntemden biraz daha yüksektir. Bununla birlikte, n adet yuvarlanmış sayının toplamı, beklenen hatası sıfır olan, ancak standart sapması n / 12 {\displaystyle {\sqrt {n}}/{\sqrt {12}}}{\displaystyle {\sqrt {n}}/{\sqrt {12}}} (kalan toplam gürültü) olan ve örnek başına yuvarlama hatasının standart sapması 1 / 12 n {\displaystyle 1/{\sqrt {12n}}{\displaystyle 1/{\sqrt {12n}}} olsa bile yarı karesel olarak sapma gösteren ve kolayca algılanabilen bir rastgele değişken olacaktır. Dolayısıyla, bu rastgele dağılım çok fazla veriyi yuvarlayan bazı uygulamalar için hala çok yüksek olabilir.

Çok boyutlu dithering

Basit dithering yönteminin bu çeşidi, değerleri hala kesrine eşit olasılıkla yuvarlar. Bununla birlikte, izole örnekleri yuvarlamak için rastgele bir dağılım kullanmak yerine, her yuvarlanan örnekte meydana gelen yuvarlama hatası, örneklenecek veya hesaplanacak bir sonraki çevre elemanları için toplanır; bu birikmiş değer daha sonra yuvarlanacak bu sonraki örneklenen veya hesaplanan değerlerin değerine eklenir, böylece değiştirilen değerler bir tahmin modeli (Floyd-Steinberg dithering gibi) kullanılarak bu farkı dikkate alır.

Değiştirilen değerler daha sonra yukarıdaki yuvarlama yöntemlerinden herhangi biriyle yuvarlanır, en iyileri stokastik veya dithering yöntemleridir: bu son durumda, yuvarlanan n sayının toplamı yine de beklenen hatası sıfır olan ancak mükemmel bir sabit standart sapması 1 / 12 {\displaystyle 1/{\sqrt {12}} olan bir rastgele değişken olacaktır.} {\displaystyle 1/{\sqrt {12}}}ve yuvarlatılmış örnek başına genel ortalama yuvarlama hatası sapması 1 / ( n 12 ) {\displaystyle 1/(n{\sqrt {12}})}{\displaystyle 1/(n{\sqrt {12}})} olacak ve bu da hiperbolik olarak sıfıra yakınsayacak, yuvarlatılmış örneklerde yarı hiperbolik yakınsamadan daha hızlı olacaktır.

Uygulamada, büyük örneklenmiş veri kümelerini yuvarlarken (ses, görüntü ve video oluşturma gibi), yuvarlama hatalarının birikimi en sık olarak değiştirilmiş değerlerin basit bir tahmini yuvarlamasıyla (sıfıra doğru yuvarlama gibi) kullanılır, çünkü bu, genel ortalama yuvarlama hatası sapmasının ve standart sapmasının sıfıra doğru hiperbolik yakınsamasını koruyacaktır. Bu iyileştirme görüntü ve ses işlemede sıklıkla kullanılır (özellikle de izole değerlerin basit olasılıksal titremesinin hala algılanabilir gürültü üretebildiği, hatta bazen izole örneklere uygulanan basit olasılıksal olmayan yuvarlama yöntemleriyle ortaya çıkan moiré etkilerinden daha kötü olduğu doğru yeniden ölçeklendirme ve kenar yumuşatma işlemleri için).

Biriken yuvarlama hatalarının etkili bir şekilde yayılması, örneklenen verilerin yuvarlanacak ayrık boyutuna bağlı olabilir: renkli görüntüler (renk düzlemlerinin ayrık boyutunu ekleyen) veya üç boyutlu videolar (ayrık bir zaman boyutu ekleyen) dahil olmak üzere iki boyutlu görüntüleri örneklerken veya çok sesli ses verilerinde (zaman ve kanal ayrık boyutlarını kullanarak), bu hatayı tercih edilen bir yöne veya dikey ve dikey gibi birkaç ortogonal boyuta eşit olarak yaymak yine de tercih edilebilir. İki boyutlu görüntüler için yatay olarak veya aynı konumdaki ve/veya zaman damgasındaki paralel renk kanallarına ve bu ortogonal ayrık boyutların diğer özelliklerine bağlı olarak (bir algılama modeline göre). Bu durumlarda, birkaç yuvarlama hatası akümülatörü (her bir ayrık boyut için en az bir tane) veya akümülatörlerin (n-1)-boyutlu bir vektörü (veya matrisi) kullanılabilir.

Bu durumların bazılarında, örneklenecek ve yuvarlanacak verilerin ayrık boyutları ortogonal olmayan bir şekilde ele alınabilir: Örneğin, renkli görüntülerle çalışırken, her bir fiziksel boyuttaki (yükseklik, genişlik ve isteğe bağlı olarak zaman) trikromatik renk düzlemleri verileri, algısal bir renk modeli kullanılarak yeniden eşleştirilebilir, böylece yuvarlama hata akümülatörleri, hataları her bir ortogonal renk düzlemine bağımsız olarak yaymak yerine, açıklığı ton veya doygunluktan daha yüksek bir olasılıkla koruyacak şekilde tasarlanacaktır; ve stereofonik ses verilerinde, yuvarlanan iki veri kanalı (sol ve sağ), ortalama değerlerini korumak için, kalan yuvarlama hatalarının çoğunu sıfır etrafında dengeli bir şekilde emecek olan etkili farklarına öncelik verecek şekilde birlikte yuvarlanabilir.

Basit kesirlere yuvarlama

Bazı bağlamlarda, verilen bir x sayısının "düzgün" bir kesre yuvarlanması istenir - yani, payı m ve paydası n belirli bir maksimum değeri aşmayan en yakın kesir z = m/n. Bu problem, bir değeri sabit sayıda ondalık veya ikili basamağa veya belirli bir m biriminin katlarına yuvarlama probleminden oldukça farklıdır. Bu problem Farey dizileri, Stern-Brocot ağacı ve sürekli kesirlerle ilgilidir.

Ölçekli yuvarlama

Logaritmik ölçeğe yuvarlama olarak da adlandırılan bu yuvarlama türü, belirli bir artışa yuvarlamanın bir çeşididir, ancak sonucun ölçeğine ve büyüklüğüne bağlı olarak değiştirilen bir artışa sahiptir. Somut olarak, amaç anlamlı basamak sayısını sınırlamak ve değeri anlamlı olmayan basamaklar düşecek şekilde yuvarlamaktır. Bu tür yuvarlama, sınırlı hassasiyete sahip kayan nokta değerleriyle (IEEE-754 float ve double türleri gibi) hesaplanan sayılarda dolaylı olarak gerçekleşir, ancak daha genel olarak herhangi bir pozitif anlamlı basamak sayısına ve herhangi bir kesinlikle pozitif reel tabana sahip herhangi bir reel değeri yuvarlamak için kullanılabilir.

Örneğin, mühendislik grafiklerinde değişken adımlarla logaritmik ölçekli verileri temsil etmek için (örneğin, tabanı tamsayı ölçüsü olmak zorunda olmayan dalga uzunlukları) veya istatistiksel verilerde üstel olarak büyüyen genişlikteki aralıklar içindeki gerçek değer sınıflarını tanımlamak için kullanılabilir (ancak en yaygın kullanım 10 veya 2 gibi tamsayı tabanlarla yapılır).[ source ?]

Bu tür yuvarlama, sabit bir sıfır olmayan reel ölçekleme faktörü s (çoğu durumda bu faktör s=1'dir) ve sabit bir pozitif taban b>1 (tamsayı olması gerekmez ve çoğunlukla ölçekleme faktöründen farklıdır) ve bu tabandaki anlamlı basamakların sabit bir tamsayı sayısı n>0 ile tanımlanan bir logaritmik ölçeğe dayanır (bu, yuvarlanan sayının hesaplanan etkin ölçeği ile birlikte yuvarlama için kullanılacak artışın değerini belirleyecektir).

Birincil argüman sayısı (ve sonuçta elde edilen yuvarlanmış sayı) ilk olarak x = s-a-m-bc üstel gösteriminde temsil edilir, öyle ki s işareti +1 veya -1, mutlak mantissa a yarı açık pozitif aralık [1/b,1) ile sınırlıdır ve üs c herhangi bir (pozitif veya negatif) tam sayıdır. Bu gösterimde, tüm anlamlı rakamlar, tamsayı kısmı her zaman sıfır olan mutlak mantisanın kesirli kısmındadır.

Kaynak sayı (veya yuvarlatılmış sayı) 0 ise, mutlak mantissa a 0 olarak tanımlanır, üs c keyfi bir değere sabitlenir (çoğu kuralda 0, ancak bazı kayan noktalı gösterimler boş bir mutlak mantissa kullanamaz, ancak 0 sayısının kendisini temsil etmek için üs c için belirli bir maksimum negatif değer ayırır), ve s işareti -1 veya +1 arasında keyfi olarak seçilebilir (genellikle basit sıfır için +1 olarak ayarlanır veya sayı gösterimi pozitif ve negatif sıfırları ayırt etmeye izin veriyorsa, sonuçta aynı sayısal değeri 0 temsil etseler bile, yuvarlatılmış değerdeki argümanla aynı işarete ayarlanır).

x = a-s-bc şeklinde ölçeklendirilmiş bir üstel gösterim, işaretli mantissa a sıfıra eşit veya iki yarı açık aralıktan (-1,-1/b] ve [+1/b,+1) birinde olacak şekilde eşdeğer olarak da kullanılabilir ve aşağıdaki algoritmada durum böyle olacaktır.

Bu ölçeklendirilmiş yuvarlamayı hesaplama adımları genellikle aşağıdakine benzerdir:

  1. x sıfıra eşitse, sadece x döndürülür; aksi takdirde:
  2. x'i işaretli bir mantissa ile ölçeklendirilmiş üstel gösterime dönüştürür:
    x = a ⋅ s ⋅ b c {\displaystyle x=a\cdot s\cdot b^{c}\,}
    {\displaystyle x=a\cdot s\cdot b^{c}\,}
    1. x', x'in ölçekleme faktörü s'ye bölünerek ölçeklenmemiş değeri olsun:
      x ′ = x / s {\displaystyle x'=x/s\,}
      {\displaystyle x'=x/s\,} ;
    2. c ölçekleme üssü bir artı x' mutlak değerinin b tabanı logaritması olsun ve bir tam sayıya yuvarlansın (eksi sonsuza doğru):
      c = 1 + ⌊ log b | x ′ | ⌋ = 1 + ⌊ log b | x / s | ⌋ {\displaystyle c=1+\left\lfloor \log _{b}\left|x'\right|\right\rfloor =1+\left\lfloor \log _{b}\left|x/s\right|\right\rfloor \,}
      {\displaystyle c=1+\left\lfloor \log _{b}\left|x'\right|\right\rfloor =1+\left\lfloor \log _{b}\left|x/s\right|\right\rfloor \,} ;
    3. işaretli mantissa a, x' bölü b ile c kuvvetinin çarpımı olsun:
      a = x ′ ⋅ b - c = x / s ⋅ b - c {\displaystyle a=x'\cdot b^{-c}=x/s\cdot b^{-c}\,}
      {\displaystyle a=x'\cdot b^{-c}=x/s\cdot b^{-c}\,}
  3. bu gösterimdeki yuvarlatılmış değeri hesaplar:
    1. c', x' için başlangıç ölçekleme üssü c olsun:
      c ′ = c {\displaystyle c'=c\,}
      {\displaystyle c'=c\,}
    2. m, tutulacak anlamlı basamak sayısına göre mantissa a'yı yuvarlamak için artış olsun:
      m = b - n {\displaystyle m=b^{-n}\,}
      {\displaystyle m=b^{-n}\,}
    3. a', bu m artışına ve seçilen yuvarlama moduna göre yuvarlanan işaretli mantissa a olsun:
      a ′ = r o u n d ( a , m ) = r o u n d ( x / s ⋅ b n - c ′ ) ⋅ b - n {\displaystyle a'=\mathrm {round} (a,m)=\mathrm {round} (x/s\cdot b^{n-c'})\cdot b^{-n}\,}
      {\displaystyle a'=\mathrm {round} (a,m)=\mathrm {round} (x/s\cdot b^{n-c'})\cdot b^{-n}\,}
    4. a' mutlak değeri b'den küçük değilse, n'yi azaltın (m artışını b ile çarpın), c' ölçekleme üssünü artırın, işaretli mantissa a'yı b'ye bölün ve yeni işaretli mantissa a'yı aynı formülle a' olarak yuvarlamaya yeniden başlayın; bu adımdan yalnızca abtract "round()" işlevi a'yı her zaman 0'a doğru yuvarlıyorsa kaçınılabilir (i.e. basit bir kesme olduğunda), ancak a'yı sonsuza doğru yuvarlıyorsa gereklidir, çünkü yuvarlanan mantissa bu durumda daha yüksek bir ölçekleme üssüne sahip olabilir ve fazladan bir hassasiyet basamağı bırakabilir.
  4. yuvarlanmış değeri döndürür:
    y = s c a l e d r o u n d ( x , s , b , n ) = a ′ ⋅ s ⋅ b c ′ = r o u n d ( x / s ⋅ b n - c ′ ) ⋅ s ⋅ b c ′ - n {\displaystyle y=\mathrm {scaledround} (x,s,b,n)=a'\cdot s\cdot b^{c'}=\mathrm {yuvarlak} (x/s\cdot b^{n-c'})\cdot s\cdot b^{c'-n}\,}
    {\displaystyle y=\mathrm {scaledround} (x,s,b,n)=a'\cdot s\cdot b^{c'}=\mathrm {round} (x/s\cdot b^{n-c'})\cdot s\cdot b^{c'-n}\,} .

Soyut "round()" işlevi için, bu yuvarlama türü bir sonraki bölümde daha ayrıntılı olarak açıklanan tamsayıya yuvarlama modlarından herhangi birini kullanabilir, ancak çoğunlukla en yakına yuvarlama modudur (eşitlik bozma kuralları da aşağıda daha ayrıntılı olarak açıklanmıştır).

Örneğin:

  • ölçeklendirme faktörü 1 ile 10 tabanında ve 3 anlamlı basamakta (maksimum göreli hassasiyet=1/1000) 1,234'ün ölçeklendirilmiş yuvarlaması, herhangi bir en yakın moda yuvarlama kullanıldığında 1,23 değerini verecektir;
  • benzer ölçekli 1,236 yuvarlaması 1,24 değerini verecektir;
  • Benzer ölçeklendirilmiş 21,236 yuvarlaması 21,2 sonucunu verecektir;
  • 321,236'nın benzer ölçekli yuvarlaması 321 sonucunu verecektir;
  • aşağı yuvarlama modu kullanıldığında, 10 tabanında ve 3 anlamlı basamakta (maksimum göreli hassasiyet=1/1000) 1.234 ölçekleme faktörü 1'in ölçeklenmiş yuvarlaması 1.23 değerini verecektir;
  • Benzer ölçeklendirilmiş 1,236 yuvarlaması da 1,23 değerini verecektir;
  • 3 π / 7 ≈ 6,8571 ⋅ π ⋅ 2 - 4 {\displaystyle \scriptstyle 3\pi /7\;\approx \;6'nın ölçeklendirilmiş yuvarlaması.8571\cdot \pi \cdot 2^{-4}}{\displaystyle \scriptstyle 3\pi /7\;\approx \;6.8571\cdot \pi \cdot 2^{-4}} ölçekleme faktörü π ile {\displaystyle \scriptstyle \pi }{\displaystyle \scriptstyle \pi } 2 tabanında ve 3 anlamlı basamakta (maksimum göreli hassasiyet=1/8), aşağı yuvarlama modu kullanıldığında, 6 ⋅ π ⋅ 2 - 4 = 3 π / 8 {\displaystyle \scriptstyle 6\cdot \pi \cdot 2^{-4}\;=\;3\pi /8}{\displaystyle \scriptstyle 6\cdot \pi \cdot 2^{-4}\;=\;3\pi /8} ;
  • benzer ölçekli yuvarlama 5 π / 7 ≈ 5,7143 ⋅ π ⋅ 2 - 3 {\displaystyle \scriptstyle 5\pi /7\;\approx \;5.7143\cdot \pi \cdot 2^{-3}}{\displaystyle \scriptstyle 5\pi /7\;\approx \;5.7143\cdot \pi \cdot 2^{-3}} 5 ⋅ π ⋅ 2 - 3 = 5 π / 8 {\displaystyle \scriptstyle 5\cdot \pi \cdot 2^{-3}\;=\;5\pi /8}{\displaystyle \scriptstyle 5\cdot \pi \cdot 2^{-3}\;=\;5\pi /8} döndürür;
  • benzer ölçekli yuvarlama π / 7 ≈ 4,5714 ⋅ π ⋅ 2 - 5 {\displaystyle \scriptstyle \pi /7\;\approx \;4.5714\cdot \pi \cdot 2^{-5}}{\displaystyle \scriptstyle \pi /7\;\approx \;4.5714\cdot \pi \cdot 2^{-5}} 4 ⋅ π ⋅ 2 - 5 = π / 8 {\displaystyle \scriptstyle 4\cdot \pi \cdot 2^{-5}\;=\;\pi /8}{\displaystyle \scriptstyle 4\cdot \pi \cdot 2^{-5}\;=\;\pi /8} döndürür.
  • π / 8 = 4 ⋅ π ⋅ 2 - 5 {\displaystyle \scriptstyle \pi /8\;=\;4\cdot \pi \cdot 2^{-5}}{\displaystyle \scriptstyle \pi /8\;=\;4\cdot \pi \cdot 2^{-5}} benzer ölçekli yuvarlama da 4 ⋅ π ⋅ 2 - 5 = π / 8 {\displaystyle \scriptstyle 4\cdot \pi \cdot 2^{-5}\;=\;\pi /8}{\displaystyle \scriptstyle 4\cdot \pi \cdot 2^{-5}\;=\;\pi /8} döndürür.
  • benzer ölçekli yuvarlama π / 15 ≈ 4,2667 ⋅ π ⋅ 2 - 6 {\displaystyle \scriptstyle \pi /15\;\approx \;4.2667\cdot \pi \cdot 2^{-6}}{\displaystyle \scriptstyle \pi /15\;\approx \;4.2667\cdot \pi \cdot 2^{-6}} 4 ⋅ π ⋅ 2 - 6 = π / 16 {\displaystyle \scriptstyle 4\cdot \pi \cdot 2^{-6}\;=\;\pi /16} döndürür. {\displaystyle \scriptstyle 4\cdot \pi \cdot 2^{-6}\;=\;\pi /16}.

Mevcut değere yuvarlayın

Bitmiş kereste, yazı kağıdı, kapasitörler ve diğer birçok ürün genellikle sadece birkaç standart boyutta satılmaktadır.

Birçok tasarım prosedürü, yaklaşık bir değerin nasıl hesaplanacağını ve ardından "en yakın standart değere yuvarla", "en yakın standart değere yuvarla" veya "en yakın standart değere yuvarla" gibi ifadeler kullanılarak bazı standart boyutlara nasıl "yuvarlanacağını" açıklar.

Bir dizi tercih edilen değer logaritmik bir ölçek üzerinde eşit aralıklarla yerleştirildiğinde, herhangi bir değere en yakın tercih edilen değerin seçilmesi bir tür ölçekli yuvarlama olarak görülebilir. Bu tür "yuvarlanmış" değerler doğrudan hesaplanabilir.

Kayan nokta yuvarlama

Kayan noktalı aritmetikte yuvarlama, verilen bir x değerini belirli sayıda anlamlı basamağa sahip bir z değerine dönüştürmeyi amaçlar. Başka bir deyişle, z, z'nin büyüklüğüne bağlı olan bir m sayısının katı olmalıdır. m sayısı, kayan nokta formunun tabanının (genellikle 2 veya 10) bir kuvvetidir.

Bu ayrıntı dışında, yukarıda tartışılan tüm yuvarlama çeşitleri kayan noktalı sayıların yuvarlanması için de geçerlidir. Bu tür yuvarlama için algoritma yukarıdaki Ölçekli yuvarlama bölümünde sunulmuştur, ancak sabit bir ölçekleme faktörü s=1 ve bir tamsayı tabanı b>1 ile.

Yuvarlanan sonucun taşacağı sonuçlar için, yönlendirilmiş bir yuvarlama için sonuç, yuvarlamanın yönüne bağlı olarak ya uygun işaretli sonsuzdur ya da temsil edilebilir en yüksek pozitif sonlu sayıdır (veya x negatifse temsil edilebilir en düşük negatif sonlu sayıdır). Çift sayıya yuvarlamanın olağan durumu için bir taşmanın sonucu her zaman uygun sonsuzdur.

Buna ek olarak, yuvarlanan sonuç alttan taşacaksa, örn. üs en düşük temsil edilebilir tamsayı değerini aşacaksa, etkin sonuç ya sıfır (temsil sıfırlar için işaret ayrımını koruyabiliyorsa muhtemelen işaretli) ya da temsil edilebilir en küçük pozitif sonlu sayı (veya x negatifse temsil edilebilir en yüksek negatif sonlu sayı), muhtemelen normal olmayan bir pozitif veya negatif sayı (mantissa tüm anlamlı basamaklarını saklıyorsa) olabilir, Bu durumda en anlamlı basamak, saklanan en yüksek basamak sıfıra ayarlanarak daha düşük bir konumda saklanabilir ve saklanan bu mantissa en anlamlı basamağı düşürmez (bu, b=2 tabanında mümkün olan bir şeydir çünkü en anlamlı basamak bu tabanda her zaman 1'dir), yuvarlama yönüne bağlı olarak. Çift sayıya yuvarlamanın olağan durumu için bir alt taşmanın sonucu her zaman uygun sıfırdır.

Çift yuvarlama

Yönlendirilmiş yuvarlama durumu haricinde, bir sayının art arda iki kez farklı hassasiyetlere yuvarlanmasının, ikinci hassasiyet daha kaba olacak şekilde, son hassasiyete bir kez yuvarlama ile aynı sonucu vereceği garanti edilmez. Örneğin, 9,46'nın bir ondalıklı sayıya yuvarlanması 9,5 verir ve daha sonra yarım çift yuvarlama kullanılarak tam sayıya yuvarlandığında 10 verir, ancak doğrudan tam sayıya yuvarlandığında 9 verir.

Bazı bilgisayar dilleri ve IEEE 754-2008 standardı, basit hesaplamalarda sonucun iki kez yuvarlanmaması gerektiğini belirtir. Bu, farklı makinelerde aynı şekilde çalıştırılmak üzere tasarlandığından Java için özel bir sorun olmuştur, x87 kayan nokta ile bunu başarmak için özel programlama hilelerinin kullanılması gerekmiştir. Java dili, farkın önemli olmadığı durumlarda farklı sonuçlara izin verecek ve sonuçların doğru bir şekilde uyması gerektiğinde "strictfp" niteleyicisinin kullanılmasını gerektirecek şekilde değiştirilmiştir.

Yuvarlatılmış aritmetik ile tam hesaplama

Ayrık bir etki alanı ve aralığa sahip bir fonksiyonun tam değerini değerlendirmek için yuvarlatılmış aritmetik kullanmak mümkündür. Örneğin, bir n tamsayısının tam kare olduğunu biliyorsak, n'yi kayan noktalı bir x değerine dönüştürerek, kayan nokta ile x'in yaklaşık karekökünü y hesaplayarak ve ardından y'yi en yakın q tamsayısına yuvarlayarak karekökünü hesaplayabiliriz. n çok büyük değilse, y'deki kayan nokta yuvarlama hatası 0,5'ten az olacaktır, bu nedenle yuvarlanan q değeri n'nin tam karekökü olacaktır. Çoğu modern bilgisayarda, bu yöntem n'nin karekökünü bir tamsayı algoritması ile hesaplamaktan çok daha hızlı olabilir.

Masa yapımcısının ikilemi

William Kahan, transandantal fonksiyonları yuvarlamanın bilinmeyen maliyeti için "Tablo Yapıcının İkilemi" terimini icat etmiştir:

"Kimse y^w'yi taşma/altma yapmadığı her iki kayan noktalı argüman için doğru şekilde yuvarlanmış olarak hesaplamanın ne kadara mal olacağını bilmiyor. Bunun yerine, saygın matematik kütüphaneleri temel transandantal fonksiyonları çoğunlukla yarım ulp'den biraz daha fazla ve neredeyse her zaman bir ulp içinde hesaplar. Y^W neden SQRT gibi yarım ulp içinde yuvarlanamıyor? Çünkü kimse bunun ne kadar hesaplamaya mal olacağını bilmiyor... Transandantal bir ifadeyi hesaplamak ve önceden belirlenmiş bir basamak sayısına doğru şekilde yuvarlamak için fazladan kaç basamak taşınması gerektiğini tahmin etmenin genel bir yolu yoktur. Sonlu sayıda fazladan basamağın nihayetinde yeterli olacağı gerçeği bile (eğer doğruysa) derin bir teorem olabilir."

IEEE kayan nokta standardı, toplama, çıkarma, çarpma, bölme, karekök ve kayan nokta kalanın sonsuz hassasiyetli işlemin doğru yuvarlanmış sonucunu vereceğini garanti eder. Ancak, daha karmaşık işlevler için böyle bir garanti verilmez ve bunlar genellikle en iyi ihtimalle yalnızca son bit kadar doğrudur.

Gelfond-Schneider teoremi ve Lindemann-Weierstrass teoremi kullanılarak, standart temel fonksiyonların çoğunun rasyonel sıfır olmayan argümanlar verildiğinde transandantal sonuçlar verdiği kanıtlanabilir; bu nedenle bu tür fonksiyonları doğru şekilde yuvarlamak her zaman mümkündür. Bununla birlikte, doğru bir şekilde yuvarlanmış bir sonucun garanti edilebilmesi için belirli bir hassasiyet için ne kadar doğru sonuçların hesaplanması gerektiğine dair bir sınır belirlemek çok fazla hesaplama süresi gerektirebilir.

Şu anda tam doğruluk sunan bazı paketler var. MPFR paketi doğru şekilde yuvarlanmış keyfi hassasiyet sonuçları verir. IBM hızlı ve doğru IEEE temel fonksiyonları için bir paket yazmıştır ve gelecekte standart kütüphaneler bu hassasiyeti sunabilir.

Kaç basamaklı hesaplanırsa hesaplansın hiçbir zaman doğru şekilde yuvarlanması mümkün olmayan iyi tanımlanmış hesaplanabilir sayılar tasarlamak mümkündür. Örneğin, Goldbach'ın varsayımı doğruysa ancak kanıtlanamıyorsa, 0,5 + 10'u doğru bir şekilde yuvarlamak imkansızdır-n burada n, iki asal sayının toplamı olmayan 4'ten büyük ilk çift sayıdır veya böyle bir sayı yoksa 0,5'tir. Bununla birlikte, varsayım kanıtlanamaz olsa bile bu, verilen herhangi bir hassasiyete yaklaştırılabilir.

Tarih

Yuvarlama kavramı çok eskidir, belki bölme kavramından bile daha eskidir. Mezopotamya'da bulunan bazı eski kil tabletler, 60 tabanında karşılıklı sayıların ve kareköklerin yuvarlatılmış değerlerini içeren tablolar içermektedir. π'ye, yılın uzunluğuna ve ayın uzunluğuna yuvarlatılmış yaklaşımlar da çok eskidir.

Yuvarlaktan düze yöntemi 1940 yılından beri ASTM (E-29) standardı olarak kullanılmaktadır. Tarafsız yuvarlama ve istatistikçi yuvarlaması terimlerinin kökeni oldukça açıklayıcıdır. Robert Simpson Woodward, Olasılık ve Hatalar Teorisi'nin 1906 tarihli 4. baskısında bunu "bilgisayar kuralı" olarak adlandırmış ve o zamanlar matematiksel tabloları hesaplayan insan bilgisayarlar tarafından yaygın olarak kullanıldığını belirtmiştir. Churchill Eisenhart'ın 1947 tarihli "Effects of Rounding or Grouping Data" başlıklı makalesi (Selected Techniques of Statistical Analysis, McGrawHill, 1947, Eisenhart, Hastay, and Wallis, editörler) bu uygulamanın veri analizinde zaten "yerleşik" olduğunu göstermektedir.

"Bankacıların yuvarlaması" teriminin kökeni daha belirsiz kalmaktadır. Eğer bu yuvarlama yöntemi bankacılıkta bir standart olmuşsa, kanıt bulmak son derece zor olmuştur. Aksine, Avrupa Komisyonu'nun Avro'nun Tanıtımı ve Para Birimi Tutarlarının Yuvarlanması raporunun 2. bölümü, bankacılıkta yuvarlama konusunda daha önce standart bir yaklaşım olmadığını öne sürmekte ve "yarım" tutarların yukarı yuvarlanması gerektiğini belirtmektedir.

1980'lere kadar, kayan noktalı bilgisayar aritmetiğinde kullanılan yuvarlama yöntemi genellikle donanım tarafından sabitlenir, zayıf bir şekilde belgelenir, tutarsızdır ve her bilgisayar markası ve modeli için farklıdır. Bu durum IEEE 754 kayan nokta standardının çoğu bilgisayar üreticisi tarafından kabul edilmesinden sonra değişti. Standart, kullanıcının çeşitli yuvarlama modları arasından seçim yapmasına izin verir ve her durumda sonuçların tam olarak nasıl yuvarlanması gerektiğini belirtir. Bu özellikler sayısal hesaplamaları daha öngörülebilir ve makineden bağımsız hale getirmiş ve aralık aritmetiğinin verimli ve tutarlı bir şekilde uygulanmasını mümkün kılmıştır.

Programlama dillerinde yuvarlama fonksiyonları

Çoğu programlama dili, kesirli sayıları çeşitli şekillerde yuvarlamak için işlevler veya özel sözdizimi sağlar. FORTRAN ve C gibi en eski sayısal diller, genellikle kesme (sıfıra doğru) olmak üzere yalnızca bir yöntem sağlardı. Bu varsayılan yöntem, bir tamsayı değişkenine kesirli bir sayı atarken veya bir dizinin indeksi olarak kesirli bir sayı kullanırken olduğu gibi belirli bağlamlarda ima edilebilir. Diğer yuvarlama türlerinin açıkça programlanması gerekiyordu; örneğin, pozitif bir sayının en yakın tamsayıya yuvarlanması 0,5 eklenerek ve kesilerek uygulanabilirdi.

Ancak son yıllarda, çoğu dilin söz dizimi ve/veya standart kütüphaneleri en azından dört temel yuvarlama işlevini (yukarı/tavan, aşağı/zemin, en yakına ve sıfıra doğru) yaygın olarak sağlamaktadır. Eşitlik bozma yöntemi dile ve sürüme bağlı olarak değişebilir ve/veya programcı tarafından seçilebilir. Bazı diller IEEE-754 kayan nokta standardını takip eder ve bu fonksiyonları çift hassasiyetli kayan nokta argümanı alıp aynı tipte sonuç döndüren ve gerekirse tam sayıya dönüştürülebilen fonksiyonlar olarak tanımlar. IEEE çift hassasiyetli format 52 kesir bitine sahip olduğundan, bu yaklaşım 32 bit tamsayılara sahip dillerde sahte taşmaları önleyebilir. PHP gibi bazı diller, bir değeri belirli sayıda ondalık basamağa yuvarlayan işlevler sağlar, örneğin 4321.5678'den 4321.57'ye veya 4300'e. Buna ek olarak, birçok dil, kesirli bir sayıyı kullanıcının belirlediği sayıda ondalık basamağa (hassasiyet) yuvarlanmış bir dizeye dönüştürmeye olanak tanıyan bir "printf" veya benzer bir dize biçimlendirme işlevi sağlar. Öte yandan, kesme (sıfıra yuvarlama) hala birçok dil tarafından, özellikle iki tamsayı değerinin bölünmesi için kullanılan varsayılan yuvarlama yöntemidir.

Tam tersine, CSS ve SVG sayılar ve ölçümler için belirli bir maksimum hassasiyet tanımlamaz, bunlar Belge Nesne Modellerinde ve Arayüz-açıklama-dili arayüzlerinde sonsuz hassasiyete sahipmiş gibi dizeler olarak ele alınır ve gösterilir ve tam sayılar ile kayan nokta değerleri arasında ayrım yapmaz; ancak, bu dillerin uygulamaları, hesaplanan rakamları sınırlı bir hassasiyetle göstermeden önce (özellikle standart Javascript veya ECMAScript arayüz bağlamalarında) bu sayıları tipik olarak IEEE-754 çift kayan noktaya dönüştürecektir.

Diğer yuvarlama standartları

Bazı disiplinler veya kurumlar yuvarlama için standartlar veya yönergeler yayınlamıştır.

ABD Hava Gözlemleri

ABD Federal Meteoroloji Koordinatörlüğü, 1966 yılının ortalarında yayınladığı bir kılavuzda, hava durumu verilerinin "yarısını yukarı yuvarla" eşitlik bozma kuralıyla en yakın yuvarlak sayıya yuvarlanması gerektiğini belirledi. Örneğin, 1,5 tam sayıya yuvarlandığında 2, -1,5 ise -1 olmalıdır. Bu tarihten önce eşitlik bozma kuralı "sıfırdan yarım uzağa yuvarlama" şeklindeydi.

Meteorolojide negatif sıfır

Bazı meteorologlar, tam sayıya yuvarlanmış 0,0 ile -0,5 derece (özel) arasındaki bir sıcaklığı belirtmek için "-0" yazabilir. Bu gösterim, büyüklük ne kadar küçük olursa olsun negatif işaretin önemli olduğu durumlarda kullanılır; örneğin, sıfırın altının donmayı gösterdiği Celsius ölçeğinde sıcaklıklar yuvarlanırken. []

İlgili sayfalar

Sorular ve Yanıtlar

S: "Yuvarlama" kelimesi ne anlama gelmektedir?


C: Yuvarlama, sayısal bir değeri yaklaşık olarak eşit olan ancak daha kısa, daha basit veya daha açık bir biçime sahip başka bir değerle değiştirmektir.

S: Yuvarlamaya örnek olarak ne verilebilir?


C: 23,74 ABD dolarının 24 ABD dolarına yuvarlanması, 312/937 kesrinin 1/3'e yuvarlanması ve 2 {\displaystyle {\sqrt {2}} ifadesinin 1,41'e yuvarlanması yuvarlamaya örnek olarak verilebilir.

S: Sayıları neden yuvarlarız?


C: Orijinalinden daha kolay yazılabilen ve kullanılabilen bir değer elde etmek için sayıları yuvarlarız. Ayrıca hesaplanan bir sayının doğruluğunu belirtmek için de yapılabilir.

S: Yuvarlama ile ilgili bazı potansiyel sorunlar nelerdir?


C: Yuvarlama, sonuç olarak bir miktar yuvarlama hatası ortaya çıkarabilir ve bazı durumlarda hesaplamalarda zaman içinde biriken hatalar nedeniyle sonucu anlamsız hale getirebilir. Ayrıca, transandantal matematiksel fonksiyonların doğru bir şekilde yuvarlanması zor olabilir, çünkü önceden yukarı veya aşağı yuvarlamaya karar vermek için kaç ekstra basamağın hesaplanması gerektiğini bilmek mümkün değildir.

S: Yuvarlamanın niceleme ile ilişkisi nedir?


C: Yuvarlama, fiziksel büyüklüklerin sayılar veya dijital sinyallerle kodlanması gerektiğinde ortaya çıkan niceleme ile birçok benzerliğe sahiptir.

AlegsaOnline.com - 2020 / 2023 - License CC3