• 09-12-2017, 01:21:46
    #1
    echo (int) ((0.7 + 0.1) * 10);
    Bir sınava girdim yanlış çıktı sizce bunun çıktısı neden 7

    Cevaplar:
    A : 10
    B: 8
    C: 7
    D: 80
  • 09-12-2017, 01:40:53
    #2
    Lithack adlı üyeden alıntı: mesajı görüntüle
    echo (int) ((0.7 + 0.1) * 10);
    Bir sınava girdim yanlış çıktı sizce bunun çıktısı neden 7

    Cevaplar:
    A : 10
    B: 8
    C: 7
    D: 80
    0.1 veya 0.7 gibi 10 tabanında kayan noktalı sayılar olarak tamamiyle gösterilebilen gerçel sayılardır, 2 tabanında kayan noktalı sayılar olarak tamamiyle gösterilemezler. Bu bakımdan, az da olsa bir kayıp olmaksızın dahili ikil karşılıklarına dönüştürülemezler. Bunun şöyle bir sonucu olur: örneğin,floor((0.1+0.7)*10) işlevinden beklendiği gibi 8 değil, 7 döner; bunun sebebi dahili gösterimin aslında 7.9999999999999991118... gibi bir değer olmasıdır. Daha fazlası için: buraya bakabilirsin.
  • 09-12-2017, 01:42:42
    #3
    Merak ettim biraz araştırdım

    (0.1 + 0.7) * 10 8 olmuyormus 7.99999999 oluyormuş o da 8den büyük olmadığı için 7 oluyormuş

    0.1 + 0.7 = 0.79999998966918712
    0.2 + 0.7 = 0.89999999105930324

    kaynak 1 kaynak 2