JavaScript

JavaScript: Sayıyı Yazıya Çevirme

Text kutusuna sayı olarak girilen değerin yazı ile karşılığını yazdırma örneği;

DEMO

Örnek kodumuzun çalışması şu şekildedir. 125 değerini text kutusuna girdiğimizi varsayalım. Div etiketi içine YüzYirmiBeş yazacaktır.

Screenshot_4

Örneğimiz için gerekli olan HTML kodları

<div class="kutu">

    <input type="number" id="sayi" placeholder="Sayı Giriniz">

    <div id="goster">

    </div>

</div>

 

Örneğimizin CSS kodları

    <style>

body {

  width: 80%;

  max-width: 1200px;

  margin: 40px auto;

  font: normal 14px/1.5 "Montserrat", "Helvetica Neue", sans-serif;

  background: #cfd8dc;

  color: #37474f;

}

.kutu{

    background: whitesmoke;

    margin: 0 0 40px;

    box-shadow: 0px 2px 4px rgba(0,0,0,0.2);

    width:50%;

}

#sayi{

    width: 90%;

    padding:10px 5%;

    border:none;

    outline: none;

    margin-bottom:10px;

}

#goster{

    text-align: center;

    font-size: 1.5em;

}



    </style>

 

Örneğin JavaScript Kodları 🙂

Not: Script içi olay kullandığım için script kodlarını yazarken body kapatma etiketinin hemen üzerin koymayı unutmayın. aksi durumda sayı etiketi tanınmayacaktır.

<script>
/*not script dosyasını body kapatma etikeninin hemen üzerine yazınız.*/
var sayi= document.getElementById("sayi"); // input kutusunu 

//sayı kutusunda tuşa basıldığında
sayi.onkeyup=function(){
var goster=document.getElementById("goster");//div etiketi

var islem=new SayiDonustur(this.value);
goster.innerHTML=islem.sonuc;
} 


/*sayı gösterme işlemini yapacak sınıf*/ 
function SayiDonustur(sayi){

sayi=String(sayi);
this.sonuc;

let bolum1 = ["", "bir", "iki", "üç", "dört", "beş", "altı", "yedi", "sekiz", "dokuz"];
let bolum2 = ["", "on", "yirmi", "otuz", "kırk", "elli", "altmış", "yetmiş", "seksen", "doksan"];
let bolum3 = ["", "yüz", "bin", "milyon", "milyar", "trilyon", "katrilyon"];

let sayi1; //tam kısım
let sayi2 = ""; // ondalıklı kısım
let sonuc = "";


sayi = sayi.replace(",", "."); //virgül girilirse noktaya dönüştürülüyor

if (sayi.indexOf(".") > 0) 
{ // nokta varsa (kuruş)

sayi1 = sayi.substring(0, sayi.indexOf(".")); // tam kısım
sayi2 = sayi.substring(sayi.indexOf("."), sayi.length); // ondalıklı kısım

}
else 
{
sayi1 = sayi; // ondalık yok
}

var rk = sayi1.split(""); // rakamlara ayırma

let son;
let w = 1; // işlenen basamak
var sonaekle = 0; // binler on binler yüzbinler vs. için sona bin (milyon,trilyon...) eklenecek mi?
let kac = rk.length; // kaç rakam var?
let sonint; // işlenen basamağın rakamsal değeri
let uclubasamak = 0; // hangi basamakta (birler onlar yüzler gibi)
let artan = 0;  // binler milyonlar milyarlar gibi artışları yapar
let gecici;

if (kac > 0) { // virgül öncesinde rakam var mı?

for (i = 0; i < kac; i++) 
{
son = rk[kac - 1 - i]; // son karakterden başlayarak çözümleme yapılır.
sonint = parseInt(son); // işlenen rakam
if (w == 1) 
{ // birinci basamak bulunuyor
sonuc = bolum1[sonint] + sonuc;
} 
else if (w == 2) 
{ // ikinci basamak
sonuc = bolum2[sonint] + sonuc;
} 
else if (w == 3) 
{ // 3. basamak
if (sonint == 1) 
{
sonuc = bolum3[1] + sonuc;
} 
else if (sonint > 1) 
{
sonuc = bolum1[sonint] + bolum3[1] + sonuc;
}
uclubasamak++;
}
if (w > 3) 
{    // 3. basamaktan sonraki işlemler
if (uclubasamak == 1) 
{
if (sonint > 0) 
{
sonuc = bolum1[sonint] + bolum3[2 + artan] + sonuc;
if (artan == 0) 
{ // birbin yazmasını engelle
if(kac-1==i)
{ //
sonuc = sonuc.replace(bolum1[1] + bolum3[2], bolum3[2]);
}
}
sonaekle = 1; // sona bin eklendi
} 
else 
{
sonaekle = 0;
}
uclubasamak++;

} 
else if (uclubasamak == 2) 
{
if (sonint > 0) 
{
if (sonaekle > 0) 
{
sonuc = b2[sonint] + sonuc;
sonaekle++;
} 
else
{
sonuc = b2[sonint] + b3[2 + artan] + sonuc;
sonaekle++;
}
}
uclubasamak++;

} else if (uclubasamak == 3) 
{
if (sonint > 0) 
{
if (sonint == 1) 
{
gecici = b3[1];
}
else 
{
gecici = b1[sonint] + b3[1];
}
if (sonaekle == 0) 
{
gecici = gecici + b3[2 + artan];
}
sonuc = gecici + sonuc;
}
uclubasamak = 1;
artan++;
}

}
w++; // işlenen basamak
}

}

this.sonuc=sonuc;
}
</script>

 

SAYIYI YAZIYA ÇEVİRME ÖRNEĞİNİ İNDİR

Yorum

Yorum Yap