folder Tahribat.com Forumları
linefolder Html - CSS - XML - JavaScript - Ajax
linefolder Javascript Decimal Matematiksel İşlem



Javascript Decimal Matematiksel İşlem

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    AsayisciAsayisci
    Asayisci
    Asayisci's avatar
    Kayıt Tarihi: 14/Eylül/2009
    Erkek

    Merhaba arkadaşlar.

     

    aşağıdaki görseldeki bir .net sayfam var.
    Javascirpt ile peşinat kısmına girildiğinde otomatik olarak kalan tutar kısmına değer yazılıyor..

    Normalde decimal yani küsüratlı değerler C# için virgül (,) ile ifade ediliyor.
    Ama hatalı da olsa Javascirpt tarafında ben nokta ile yaptırmak zorunda kaldım.
    Zira kullanıcı nokta girmediğinde yani virgül girdiğinde küsürat olarak değerlendirmiyor.
    Nedenini anlamadım henüz.

    Neyse şu aşamada küsüratlı işlemlerimde hala hata var.
    Bu konuda bana yardımcı olabilecek birileri var mı

    İyi akşamlar.

     

    iki Javasript tetikleyicimiz var İlki==> onchange="javascript:TutarChange();"

    function TutarChange() {
    
        var x = document.getElementById("txtTutar");
        var currentVal = x.value;
        document.getElementById("txtKalan").value = parseFloat(currentVal);
    }

    Diğeri==> onchange="javascript:PesinatChange();" 

    function PesinatChange() {
        var Tutar = 0;
        var Pesinat = 0;
    
        var x = document.getElementById("txtTutar");
        var y = document.getElementById("txtPesinat");
    
        var Tutar = parseFloat(x.value);
        var Pesinat = parseFloat(y.value);
        var Kalan = Tutar - Pesinat;
        if (Kalan > -1) {
            var Kalan = Tutar - Pesinat;
            document.getElementById("txtKalan").value = parseFloat(Kalan);
        } else { alert('Alınan peşinat Tutardan büyük olamaz!') }
    }

     

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Gizem
    sLeymN
    sLeymN's avatar
    Kayıt Tarihi: 31/Mart/2008
    Erkek

    Abi textboxlar veriyi string olarak veriyor zaten. Stringi istediğini gibi manipüle edip sonra float a çevirsene


    Cehennemin dibine kadar yolum var daha.. || Nasılsa her yalnız kendine sürgündür Asmera unutma.
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    AsayisciAsayisci
    Asayisci
    Asayisci's avatar
    Kayıt Tarihi: 14/Eylül/2009
    Erkek
    sLeymN bunu yazdı

    Abi textboxlar veriyi string olarak veriyor zaten. Stringi istediğini gibi manipüle edip sonra float a çevirsene

    yukarıda tam olarak bunu yapmaya çalıştığım hata alıyorum.

    örnek kod varsa denerim

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Gizem
    sLeymN
    sLeymN's avatar
    Kayıt Tarihi: 31/Mart/2008
    Erkek

    iki Javasript tetikleyicimiz var İlki==> onchange="javascript:TutarChange();"

    1
    2
    3
    4
    5
    6
    function TutarChange() {
     
        var x = document.getElementById("txtTutar");
        var currentVal = x.value.replaceAll(".",",");
        document.getElementById("txtKalan").value = parseFloat(currentVal);
    }

    Diğeri==> onchange="javascript:PesinatChange();" 

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    function PesinatChange() {
        var Tutar = 0;
        var Pesinat = 0;
     
        var x = document.getElementById("txtTutar");
        var y = document.getElementById("txtPesinat");
     
        var Tutar = parseFloat(x.value.replaceAll(".",","));
        var Pesinat = parseFloat(y.value.replaceAll(".",","));
        var Kalan = Tutar - Pesinat;
        if (Kalan > -1) {
            var Kalan = Tutar - Pesinat;
            document.getElementById("txtKalan").value = parseFloat(Kalan).toString().replaceAll(",",".");
        } else { alert('Alınan peşinat Tutardan büyük olamaz!') }
    }

    replaceAll fonksiyonu ile aldığın değerlerdeki noktaları virgülle değiştireceksin, sonra float parse edeceksin ardından işlemi yapacaksın çıkan sonucu float to string yapıp tekrar virgül ile noktayı değiştireceksin. 


    Cehennemin dibine kadar yolum var daha.. || Nasılsa her yalnız kendine sürgündür Asmera unutma.
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    AsayisciAsayisci
    Asayisci
    Asayisci's avatar
    Kayıt Tarihi: 14/Eylül/2009
    Erkek
    sLeymN bunu yazdı

    iki Javasript tetikleyicimiz var İlki==> onchange="javascript:TutarChange();"

    1
    2
    3
    4
    5
    6
    function TutarChange() {
     
        var x = document.getElementById("txtTutar");
        var currentVal = x.value.replaceAll(".",",");
        document.getElementById("txtKalan").value = parseFloat(currentVal);
    }

    Diğeri==> onchange="javascript:PesinatChange();" 

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    function PesinatChange() {
        var Tutar = 0;
        var Pesinat = 0;
     
        var x = document.getElementById("txtTutar");
        var y = document.getElementById("txtPesinat");
     
        var Tutar = parseFloat(x.value.replaceAll(".",","));
        var Pesinat = parseFloat(y.value.replaceAll(".",","));
        var Kalan = Tutar - Pesinat;
        if (Kalan > -1) {
            var Kalan = Tutar - Pesinat;
            document.getElementById("txtKalan").value = parseFloat(Kalan).toString().replaceAll(",",".");
        } else { alert('Alınan peşinat Tutardan büyük olamaz!') }
    }

    replaceAll fonksiyonu ile aldığın değerlerdeki noktaları virgülle değiştireceksin, sonra float parse edeceksin ardından işlemi yapacaksın çıkan sonucu float to string yapıp tekrar virgül ile noktayı değiştireceksin. 

    Yine hatalı işlem yapıyor.

     

    virgullü denedim 

     

    noktalı sonuç

  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    baysevgi77
    baysevgi77's avatar
    Banlanmış Üye
    Kayıt Tarihi: 27/Mart/2007
    Erkek

    Dener misin hocam?

     

    function TutarChange() {
     
        var x = document.getElementById("txtTutar");
        var currentVal = x.value;
        document.getElementById("txtKalan").value = currentVal;
    }
    

     

     

    function PesinatChange() {
        var Tutar = 0;
        var Pesinat = 0;
    
        var x = document.getElementById("txtTutar");
        var y = document.getElementById("txtPesinat");
    
        var Tutar = parseFloat(x.value.replaceAll(".",","));
        var Pesinat = parseFloat(y.value.replaceAll(".",","));
        var Kalan = Tutar - Pesinat;
        if (Kalan > -1) {
            var Kalan = Tutar - Pesinat;
            document.getElementById("txtKalan").value = Kalan.toFixed(2).replaceAll(",",".");
        } else { alert('Alınan peşinat Tutardan büyük olamaz!') }
    }
    
    

     

     

     

     

     

    baysevgi77 tarafından 27/Şub/23 21:37 tarihinde düzenlenmiştir
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    AsayisciAsayisci
    Asayisci
    Asayisci's avatar
    Kayıt Tarihi: 14/Eylül/2009
    Erkek
    baysevgi77 bunu yazdı

    Dener misin hocam?

     

    function TutarChange() {
     
        var x = document.getElementById("txtTutar");
        var currentVal = x.value;
        document.getElementById("txtKalan").value = currentVal;
    }
    

     

     

    function PesinatChange() {
        var Tutar = 0;
        var Pesinat = 0;
    
        var x = document.getElementById("txtTutar");
        var y = document.getElementById("txtPesinat");
    
        var Tutar = parseFloat(x.value.replaceAll(".",","));
        var Pesinat = parseFloat(y.value.replaceAll(".",","));
        var Kalan = Tutar - Pesinat;
        if (Kalan > -1) {
            var Kalan = Tutar - Pesinat;
            document.getElementById("txtKalan").value = Kalan.toFixed(2).replaceAll(",",".");
        } else { alert('Alınan peşinat Tutardan büyük olamaz!') }
    }
    
    

     

     

     

     

     

    hem nokta da hem de virgül de yine hata alıyorum.

     

    Tutar:375.75
    Peşinat:10.15
    Kalan:365.00

     

    Tutar:375,75
    Peşinat:10,15
    Kalan:365.00

  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    baysevgi77
    baysevgi77's avatar
    Banlanmış Üye
    Kayıt Tarihi: 27/Mart/2007
    Erkek
    function TutarChange() {
     
        var x = document.getElementById("txtTutar");
        var currentVal = x.value;
        document.getElementById("txtKalan").value = currentVal;
    }
    

     

     

    function PesinatChange() {
        var Tutar = 0;
        var Pesinat = 0;
    
        var x = document.getElementById("txtTutar");
        var y = document.getElementById("txtPesinat");
    
        var Tutar = parseFloat(x.value.replace(".",","));
        var Pesinat = parseFloat(y.value.replace(".",","));
        var Kalan = Tutar - Pesinat;
        if (Kalan > -1) {
            var Kalan = Tutar - Pesinat;
            document.getElementById("txtKalan").value = Kalan.toFixed(2).replace(",",".");
        } else { alert('Alınan peşinat Tutardan büyük olamaz!') }
    }
    
    

     

    Bunu dener misin?

     

    baysevgi77 tarafından 27/Şub/23 21:58 tarihinde düzenlenmiştir
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    antichrist
    antichrist's avatar
    Kayıt Tarihi: 15/Ağustos/2021
    Erkek

    Hocam javascript'de , ile sayı ayırma gibi bir notasyon yok o yüzden bence C#'da işlem yaparken CultureInfo kullanarak float değerlerde , yerine . kullanımını değiştirmen daha sağlıklı olur gibi geliyor. Javascript'de takla atmana da gerek kalmaz.

    System.Globalization.CultureInfo customCulture = (System.Globalization.CultureInfo)System.Threading.Thread.CurrentThread.CurrentCulture.Clone();
    customCulture.NumberFormat.NumberDecimalSeparator = ".";
    
    System.Threading.Thread.CurrentThread.CurrentCulture = customCulture;

     

    Javascript'de , konmaması için de input type="number" olarak belirtirsen o input'a decimal ve int sayılar hariç girişi engelleyebilirsin.

    antichrist tarafından 27/Şub/23 22:01 tarihinde düzenlenmiştir

    ~
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    AsayisciAsayisci
    Asayisci
    Asayisci's avatar
    Kayıt Tarihi: 14/Eylül/2009
    Erkek
    baysevgi77 bunu yazdı
    function TutarChange() {
     
        var x = document.getElementById("txtTutar");
        var currentVal = x.value;
        document.getElementById("txtKalan").value = currentVal;
    }
    

     

     

    function PesinatChange() {
        var Tutar = 0;
        var Pesinat = 0;
    
        var x = document.getElementById("txtTutar");
        var y = document.getElementById("txtPesinat");
    
        var Tutar = parseFloat(x.value.replace(".",","));
        var Pesinat = parseFloat(y.value.replace(".",","));
        var Kalan = Tutar - Pesinat;
        if (Kalan > -1) {
            var Kalan = Tutar - Pesinat;
            document.getElementById("txtKalan").value = Kalan.toFixed(2).replace(",",".");
        } else { alert('Alınan peşinat Tutardan büyük olamaz!') }
    }
    
    

     

    Bunu dener misin?

     

    12.75

    2.15

    10.00

  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    2021 Talihlisi
    TheAvenqer
    TheAvenqer's avatar
    Kayıt Tarihi: 09/Şubat/2014
    Erkek

    Öncelik globalde küsürat ayracı . ile ifade edilir basamak ayracı , ile TR de ise tam tersi küsürat , basamak . olarak ifade ediliyor bundan dolayı

     

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
        <script>
        
            function hesapla() {
                var tutar = document.getElementById("tutar").value;
                if (tutar == "") {
                    tutar = 0;
                }
                pesinat = document.getElementById("pesinat").value;
                if (pesinat == "") {
                    pesinat = 0;
                }
                tutar = tutar.replace(",", ".");
                pesinat = pesinat.replace(",", ".");
                kalan = parseFloat(tutar) - parseFloat(pesinat);
                kalan = kalan.toString().replace(".", ",");
                document.getElementById("kalan").value = kalan;
            }
        
        </script>
    </head>
    <body>
        <input type="text" id="tutar" placeholder="Tutar" onchange="hesapla()">
        <input type="text" id="pesinat" placeholder="Peşinat" onchange="hesapla()">
        <input type="text" id="kalan" placeholder="Kalan">
    
    </body>
    </html>
     
    TheAvenqer tarafından 27/Şub/23 22:07 tarihinde düzenlenmiştir

    Bot ve lisans ihtiyaçlarınız için pm atınız.
Toplam Hit: 2318 Toplam Mesaj: 17
javascirpt decimal