• 14-11-2009, 20:22:52
    #1
    arkadaşlar merhaba, javascriptte iyi değilimdir, fakat şu işlemde hata nerede acaba ?


    <script type="text/javascript">

    function topla()
    {
    ilk=1.2;
    son=0.6;
    return ilk+son;
    }

    </script>

    <body onload="alert(topla());">


    bunu çalıştırdığım zaman ekrana neden 1.7999999999999998 geliyor ?
    1.8 gelmesini istiyorum ben yardımlarınızı bekliyorum
  • 15-11-2009, 01:54:20
    #2
    yardımcı olabilecek biri yok mu ?
  • 15-11-2009, 22:41:13
    #3
    sanırım konu herkesi aştı
  • 15-11-2009, 22:55:02
    #5
    Kimlik doğrulama veya yönetimden onay bekliyor.
    var rakam = Math.round(4.7)
    sonuç: 5
    var rakam = Math.round(0.49)
    sonuç: 0
    var rakam = Math.round(0.51)
    sonuç: 1

    http://www.w3schools.com/js/default.asp
    Buradan geniş bilgi toplayabilirsin.
  • 15-11-2009, 23:00:20
    #6
    NoNeTheLeSs adlı üyeden alıntı: mesajı görüntüle
    var rakam = Math.round(4.7)
    sonuç: 5
    var rakam = Math.round(0.49)
    sonuç: 0
    var rakam = Math.round(0.51)
    sonuç: 1

    http://www.w3schools.com/js/default.asp
    Buradan geniş bilgi toplayabilirsin.

    soruyu anlamamışsın sanırım round sormuyorum ben
    1.2 ile 0.6 yı toplayınca 1.8 veren javascript kodu lazım, aslnda buna fonksiyon gerekmez direk toplayınca 1.8 i vermesi gerekiyor, ama 1.7999999998 gibi bi sonuç veriyor garip değil mi ?

    acaba bi bug mı bu
  • 15-11-2009, 23:18:04
    #7
    Kimlik doğrulama veya yönetimden onay bekliyor.
    +0,1 daha eklet
  • 15-11-2009, 23:24:21
    #8
    0.6 ile 3 ü çarpınca da 1.7999999998 diyor ama :
    0.6 ile 2 yi çarpınca 1.2 diyor yani doğru buluyor

    0.6 ile 0.6 yı toplayınca 1.2 yi buluyor,
    0.6 ile 1.2 yi toplayınca 1.8 i bulamıyor

    nerde bu sorun ya
  • 15-11-2009, 23:40:40
    #9
    çözümü buldum : http://en.wikipedia.org/wiki/Computer_numbering_formats burada anlatılıyor,

    şöyle yapınca oluyor :

    function topla()
    {
    var ilk=1.2;
    var son=0.6;
    result=ilk+son;
    result=result.toFixed(1);
    return result;
    }

    toFixed(1); = virgülden sonra 1 basamak al demekmiş, ekrana 1.8 veriyor böyle yapınca. toFixed(2); yapınca 1.80 veriyor.

    ama harbiden saçma geldi, 1.2 ile 0.6 yı toplayamayan javascripti kınıyorum