folder Tahribat.com Forumları
linefolder Database - Veritabanı
linefolder SQL Ondalıklı Sayılar İçin Hangi Data Türü Uygundur?



SQL Ondalıklı Sayılar İçin Hangi Data Türü Uygundur?

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    kofcu
    kofcu's avatar
    Kayıt Tarihi: 29/Ağustos/2014
    Erkek

    merhaba arkadaşlar. datalar içinde birçok ondalıklı sayı var.

    koymada sorun yok fakat üzerinde toplama çıkarma yaptıkça sapıtmaya başladı.

    tam bu mesajı yazarken aklıma bir fikir geldi(en son yazacağım)

    örneğin 3.2 gibi bir sayıdan 3.2 çıkarınca -0.000000000000354376 gibi bir sayı buldu :D

    sonra o sayıyı ekleyim dedim yine saçma bir sayı buldu(daha küçük)

    bi daha denedim vesaire derken e üssülere geldi falan.

    muhtemelen bu matematikteki FLOAT mantığı ile ilgili bir şey ama hiçbir bilgim yok o yüzden tahribata sorayım dedim

    ne yapacağım şimdi ben FLOAT yerine STRING mı yapmalıyım data türünü database'de?

    ya da ne yapsam?

    aklıma gelen şey de şuydu: toplama çıkarmayı php üzerinde yapsam sonucu database e koysam?

    toplama çıkarmaların doğruluğu benim için önemli arkadaşlar en uygun nasıl yapmalıyım? javascript'te de bazı tuhaflıklar vardı bildiğim kadarıyla.....

    ek: db=mysql

    kofcu tarafından 31/Tem/16 14:22 tarihinde düzenlenmiştir

    ben de sevgiden yanayım...
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    nick6
    0x656e
    0x656e's avatar
    Kayıt Tarihi: 19/Mayıs/2012
    Homo

    Text olarak koyup php tarafında double veya float yapabilirsin.Ama convert kontrollerini iyi yap hata fırlatmasın ekrana 

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    angels_demos
    angels_demos's avatar
    Kayıt Tarihi: 03/Haziran/2006
    Erkek

    Float. Niye baska bisey yapasin ki?

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    kofcu
    kofcu's avatar
    Kayıt Tarihi: 29/Ağustos/2014
    Erkek

    @0x656e ben de işlemi php'ye yaptırmayı düşündüm ama, işleme giren değişkenlerden biri database'deki bir değer, yani ekstradan bi select yapmam gerekecek sanırım bunun için.

    @angels_demos evet Float olacak orası kesin gibi bir şey ama işlemlerde sıkıntı çıkıyor hocam sorunum orada.

     

    internette float numara türünün bu tür hesaplama hatalarına sahip olduğunu duymuştum. Bunu aşmak için de örneğin 0.2 + 0.1 işlemi yerine (2 / 10) + (1 / 10) işlemi yapabilirsiniz gibi bir çözüm sunulmuş. şimdi bunu deneyeceğim fakat yine 0x656e müride söylediğim gibi diğer değişkeni seçmem gerekiyor. bakalım ne yapacağım artık. aşabilirsem sorunu buradan paylaşacağım...


    ben de sevgiden yanayım...
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tayga
    Tayga's avatar
    Kayıt Tarihi: 21/Haziran/2015
    Erkek

    Number_format fonksiyonu ile önce ondalık sistemin ayıraçlarını düzeltmelisin 

  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    DrKill
    DrKill's avatar
    Kayıt Tarihi: 10/Mart/2004
    Erkek

    Hocam bu bir hata değil. Float sayı tiplerinin çalışma mantığı budur.

    Eğer bu tür sorunları yaşamak istemiyorsan, DECIMAL tarzı veri tipi kullanmalısın.

    İşlem yapacağın türü String felan depolamayı düşünüyorsan, programlamayı bırakmalısın bence.

    Al sana kaynak: http://stackoverflow.com/questions/2567434/mysql-floating-point-comparison-issues

     

    DrKill tarafından 01/Ağu/16 01:01 tarihinde düzenlenmiştir

    Bu imzayı her gördüğünüzde 4gb kotanızın 0,00000358559191226959228515625 azalmaktadır. Bilerek ve istenerek bu imza yapılmıştır. Amaç kotanızı sömürmektir
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    angels_demos
    angels_demos's avatar
    Kayıt Tarihi: 03/Haziran/2006
    Erkek
    DrKill bunu yazdı

    Hocam bu bir hata değil. Float sayı tiplerinin çalışma mantığı budur.

    Eğer bu tür sorunları yaşamak istemiyorsan, DECIMAL tarzı veri tipi kullanmalısın.

    İşlem yapacağın türü String felan depolamayı düşünüyorsan, programlamayı bırakmalısın bence.

    Al sana kaynak: http://stackoverflow.com/questions/2567434/mysql-floating-point-comparison-issues

     

    :D

    adam haklı.

  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    kofcu
    kofcu's avatar
    Kayıt Tarihi: 29/Ağustos/2014
    Erkek
    Data type Access SQLServer Oracle MySQL PostgreSQL
    boolean Yes/No Bit Byte N/A Boolean
    integer Number (integer) Int Number Int
    Integer
    Int
    Integer
    float Number (single) Float
    Real
    Number Float Numeric
    currency Currency Money N/A N/A Money
    string (fixed) N/A Char Char Char Char
    string (variable) Text (<256)
    Memo (65k+)
    Varchar Varchar
    Varchar2
    Varchar Varchar
    binary object OLE Object Memo Binary (fixed up to 8K)
    Varbinary (<8K)
    Image (<2GB)
    Long
    Raw
    Blob
    Text
    Binary
    Varbinary

    merhaba. yazı ve numaralarla ilgili data tipleri bilgim string integer float'dan ibaret olduğu için float ile işlemi yapamıyorsam integer ile yazamayacağımdan en azından string ile yazıp işlemi php ile yapayım gibi şeyler düşünmüştüm de... neyse.

    decimal işimi gördü, verilen şu link güzel anlatmış http://stackoverflow.com/questions/2567434/mysql-floating-point-comparison-issues

    yardımlar için teşekkür ederim.


    ben de sevgiden yanayım...
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Tarikat Şeyhi
    HolyOne
    HolyOne's avatar
    Kayıt Tarihi: 01/Haziran/2002
    Erkek

    float virgülden sonra belli bir basamaktan sonra yuvarlar. Bu normalde problem olmayacak kadar küçük bir yuvarlamadır fakat eğer para tutuyorsan yada tuttuğun değerleri çarpıp bölüyorsan sonuçları miğde bulandırır. Atıyorum gelen ve giden para arasında 1 tl fark çıkar sebebini ara ara bulamazsın. Bu tip virgüllü sayılar için decimal değişkeni var. decimal ile tuttuğun veri ile problem yaşamazsın


    Nush ile uslanmayanı etmeli tekdir, Tekdir ile uslanmayanın hakkı kötektir!
Toplam Hit: 1485 Toplam Mesaj: 9
sql hesaplama sayılar