Templat yang dilindungi selama-lamanya

Templat:Precision

Daripada Wikipedia, ensiklopedia bebas.
Jump to navigation Jump to search
Pendokumenan templat[lihat] [sunting] [sejarah] [nyahcache]


Templat:Precision menentukan ketepatan (sebagai kiraan digit perpuluhan) untuk jumlah apa pun, besar atau negatif, menggunakan algoritma pantas. Ia juga dapat mengatasi titik perpuluhan (seperti "15." atau "-41.") atau sifar belakang (seperti "15.34000" mempunyai ketepatan sebagai 5 digit perpuluhan). Untuk input pecahan, ia mengembalikan logaritma asas sepuluh pengangka.

Contoh

{{Precision|1111.123456789}} 9
{{Precision|1111.12345678}} 8
{{Precision|1111.1234567}} 7
{{Precision|1111.123456}} 6
{{Precision|1111.12345}} 5
{{Precision|1111111111.12345678}} 8
{{Precision|1111111111.1234567}} 7
{{Precision|1111111111.123456}} 6
{{Precision|1111111111.12345}} 5
{{Precision|1111111111.1234}} 4
{{Precision|1111111111.123}} 3
{{Precision|1111111111.12}} 2
{{Precision|1111111111.1}} 1
{{Precision|1111111111.10}} 2
{{Precision|1111111111.100}} 3
{{Precision|1111111111.1000}} 4
{{Precision|1111111111.10000}} 5
{{Precision|1111111111}} 0
{{Precision|1111111110}} -1
{{Precision|1111111100}} -2
{{Precision|1111111000}} -3
{{Precision|1111110000}} -4
{{Precision|1111100000}} -5
{{Precision|1111000000}} -6
{{Precision|1110000000}} -7
{{Precision|1100000000}} -8
{{Precision|0}} 0
{{Precision|1}} 0
{{Precision|22.45}} 2
{{Precision|22.12345}} 5
{{Precision|22}} 0
{{Precision|22000}} -3
{{Precision|-15.275}} 3
{{Precision|-15.2500}} 4
{{Precision|23000222000111.432}} 3
{{Precision|-15.123}} 3
{{Precision|0.09}} 2
{{Precision|0.88}} 2
{{Precision|880000}} -4
{{Precision|90000000}} -7

Pepijat yang dikenali

  • Untuk nombor dalam notasi ilmiah, ketepatan biasanya dikembalikan terlalu rendah dengan tempat 1 perpuluhan. Contoh: {{precision |7.1234E+06}} → -2 (haruslah tepat dengan 4 digit perpuluhan, bukan 3).

Nota teknikal

  • NOTA A1: Templat ini menentukan ketepatan perpuluhan dengan mengira panjang rentetan angka (dalam #switch membandingkan panjang tali berlapis), kemudian tolak panjang integer, tolak titik perpuluhan, dan tolak 1 jika negatif. Untuk integer, 1 tempat dikurangkan untuk setiap jejak 0 pada integer. Untuk pecahan, mana-mana kiraan sebelum dibersihkan x 0, kemudian mengembalikan logaritma asas sepuluh penyebut: (..sebelumnya...)*0 + (Dalam denom / Dalam 10).
  • NOTA D2: Pemeriksaan, untuk integer, membandingkan jumlahnya dengan tambahan "0" pada akhir: apabila jumlahnya adalah perpuluhan, maka nilainya tidak berubah dengan menambahkan 0 pada akhir: jadi 5.23 = 5.230 adalah benar, manakala bagi keseluruhan integer, ia akan menjadi: 5 = 50 sebagai salah, kerana nilai (value) menjadi n*10 untuk integer n. Jadi, untuk integer n, semakan menolak: n = n0 sebagai salah; oleh itu n adalah integer.
  • NOTA M3: Magnitud bahagian integer dikira dengan logaritma aras nilai mutlak (dibahagikan dengan logaritma asli daripada 10 untuk disesuaikan e=2.71828*), sebagai: ln (aras( abs(-0.050067) )+0.99 )/ln10 Aras fungsi(x) memangkas bahagian perpuluhan, untuk meninggalkan keseluruhan kiraan: 0-9 menghasilkan 0, 10-19 sebagai 1, 1000-1999 sebagai 3. abs(x) mengelakkan aras negatif, aras(-0.1)= -1, oleh itu menggunakan abs(x) memastikan -0.1 aras hingga 0 bukan -1. Hampir sifar, +0.99 mengelakkan log 0 yang tidak sah, tetapi tidak membundarkan perpuluhan, sudahpun melaras sebagai nnn.00. Kerumitan adalah operasi 6: aras abs( {1} ) +0.99 kemudian log10x (lnx ÷ ln10), kemudian aras nisbah logaritma. Perpuluhan -1 < x < 1 menghasilkan -1, mengelakkan log 0.001 = -3.
  • NOTA N4: Penyediaan templat if-else dan nested dikurangkan minimum, kerana had MediaWiki 1.6 40 tahap jika-logik untuk semua templat nested yang digunakan bersama. Templat {ordomag} dihilangkan untuk mengelakkan 2 lagi templat nested. Templat {Precision} mempunyai 8 tahap, dan templat ini dipangkas menjadi 5 tahap sahaja.
  • NOTA S5: #switch dijalankan dengan "x" ditambahkan di hadapan jumlah, jika tidak #switch akan dibandingkan sebagai angka di mana "2" akan sepadan dengan "2.0" walaupun "2" adalah panjang 1 jadi "x2" tidak lagi sesuai dengan "x2.0" sebagai bukan-angka. #switch akan keluar pada perlawanan pertama, jadi panjang yang lebih kecil dibandingkan terlebih dahulu, untuk mengelakkan perbandingan tambahan bagi rentetan angka yang lebih jarang dan panjang sehingga 41 panjang.
  • NOTA W6: Pemeriksaan integer dengan bilangan sifar akhir biasa digunakan n=n/10*10, untuk setiap kekuatan 10, di mana jutaan keseluruhan sepadan: {{#ifexpr: {1}=aras( {1}/1E6 )*1E6| }} Sebelumnya, {Precision} telah cuba menggunakan "bulat" untuk mengesan akhir sifar tetapi "bulat" kehilangan ketepatan pada -5, jadi, n00000 bulat -5 berbeza daripada n00000 sedikit, dan perbandingan dengan jumlah bulat yang tepat gagal menandingi beberapa nombor ketika 6 atau lebih sifar "n000000".
  • NOTA Z7: Pemeriksaan sifar untuk 0,00000 membandingkan penambahan 1 pada jumlahnya, berbanding menambahkan "1" pada akhir: jika jumlahnya adalah perpuluhan, kemudian menambahkan 1 akan lebih besar daripada menambahkan 1 pada akhir: 0.00 + 1 > 0.001, sedangkan untuk keseluruhan sifar, akan menjadi: 0 + 1> 01 sebagai salah, kerana nilainya sama. Jadi, untuk bilangan bulat 0, semakan menolak: 0 + 1> 01 sebagai salah; oleh itu keseluruhan 0 adalah integer.

Lihat juga