Konu: table da float ?
selamlar;
Table oluşturuken type da float diye bir seçenek var.
Bunun numeric den farkı nedir? nerelerde kullanılır?
Giriş yapmadınız. Lütfen giriş yapın yada kayıt olun.
fox4um » Veritabanı, Tablo, View, Index ve SQL Syntax » table da float ?
selamlar;
Table oluşturuken type da float diye bir seçenek var.
Bunun numeric den farkı nedir? nerelerde kullanılır?
Eger numeric kullanman gerkiyorsa onu kullan. Normalde ne numeric ne de float'in kullanimi kalmadi bence (fox2xte yeri vardi).
Numeric yerine kullanmanin nedeni (eger duzeltilmediyse) buyuk rakamlarda anlasilmaz bir sekilde yuvarlama yapiyordu numeric.
teşekkür ederim.
Eger numeric kullanman gerkiyorsa onu kullan. Normalde ne numeric ne de float'in kullanimi kalmadi bence (fox2xte yeri vardi).
Numeric yerine kullanmanin nedeni (eger duzeltilmediyse) buyuk rakamlarda anlasilmaz bir sekilde yuvarlama yapiyordu numeric.
foxpro dos bazı rakamlarda göçüyor bile. hiç hata vermeden dos a düşüyor. roundla çözüyorum o problemi. bunu bazen yapıyor. neden yaptığını da anlamadım. 2 kuruş hanesi olan rakamı hiç gerekmediği halde round ile 2 kuruş yuvarlıyorum...
Eger numeric kullanman gerkiyorsa onu kullan. Normalde ne numeric ne de float'in kullanimi kalmadi bence (fox2xte yeri vardi).
Numeric yerine kullanmanin nedeni (eger duzeltilmediyse) buyuk rakamlarda anlasilmaz bir sekilde yuvarlama yapiyordu numeric.
foxpro dos bazı rakamlarda göçüyor bile. hiç hata vermeden dos a düşüyor. roundla çözüyorum o problemi. bunu bazen yapıyor. neden yaptığını da anlamadım. 2 kuruş hanesi olan rakamı hiç gerekmediği halde round ile 2 kuruş yuvarlıyorum...
sql data da float mı? decimal mi?
Ne önerirsiniz?
" Normalde ne numeric ne de float'in kullanimi kalmadi bence " yazmışsın Çetin Hocam.
Peki o halde şunu sorucam..... Nümerik yerine ne kullanmalıyız.?
(Tavsiyen üzere kesinlikle general kullanmıyoruz. Nümeriktemi kullanmıycaz)
Bir ara VFP Öğreniyorum başlağı altında bir şeyler yazmaya çalışmıştım. O yazının veritabanına başlarken atlı yazımı kısmet olup bir türlü bitiremedim ama o yazımda double ile ilgili kısmı burada yayınlayayım.
B, Double
Matematiksel işlemlerde özellikle dijitten kaynaklanan sorunlardan kurtulmak ve daha doğru sonuçlar elde etmek için bu saha tipini kullanabilirsiniz. Bu cümle biraz kapalı oldu. Bu durumu bir örnek ile açıklamaya çalışalım. Bir işlem sonucunda 22 rakamını 7'ye bölmeniz ve çıkan sonucu tabloda saklamanız gerekmektedir. Bu sonucu ise bir başka zaman kullanmamız gerektiği bir durumu düşünelim.
22/7 = 3,1428571428571428571428571428571 kendini tekrarlayan bir dijite sahip bir sayı olur. Bundan sonraki kısımları ise bir gerçek örnek ile yapalım.
Create Cursor curDeneme (nSonuc1 B(2), nSonuc2 N(6,2))
Insert Into curDeneme Values (22 / 7, 22 / 7)
? curDeneme.nSonuc1 && 3,14 olarak görünür. Çünkü bu saha Double olup 2 dijit olarak ayarlanmıştı.
? curDeneme.nSonuc1 * 10000 && 31428,57 olarak görünür. Dikkat edin bu çarpma işlemi 3,14 ile değil 3,1428571428571428571428571428571 ile olmuştur.
? curDeneme.nSonuc2 && 3,14 olarak görünür. Çünkü bu daha Numeric olup 2 dijit olarak ayarlanmıştır.
? curDeneme.nSonuc2 * 10000 && 31400,00 olarak görünür. Dikkat edin bu çarpma işlemi 3,14 ile yapılmıştır. Doubledaki gibi değil.
? curDeneme.nSonuc1 * 7 && 22,00 olarak görünür
? curDeneme.nSonuc2 * 7 && 21,98 olarak görünür.
Hassas işlemlere çok nadir ihtiyaç duyuyorum. Ancak yinede Double saha tipini sıkça kullanıyorum. Toplam boyu 8'i geçen tüm sayısal tipler için double tipini tercih ediyorum. Çünkü tabloda N(12,2) saha tipi 12 byte yer tutarken B(2) 8 byte yer tutmaktadır. neresinden baksanız her kayıt için 4 byte kar etmiş oluyorum. Bu yüzden N(8,2) üzeri tipler için B(2) tercih ediyorum. Bu sahayı kullanırken de hassasiyete ihtiyacım yoksa Round fonksiyonunu kullanıyorum. Yukarıdaki örnek için ;
Insert Into curDeneme Values (Round(22 / 7, 2), 22 / 7)
Ben de birkac teknik detay ekleyeyim. Numerik, float tiplerinde data disk uzerinde oldugu gibi tutuluyor (yani okundugu gibi, sanki karaktermis gibi). Integer,double,currency tiplerinde ise bu sayilarin 4-8 byte olarak hexadecimal sekilleri tutuluyor. Hexadecimal olarak fraksiyonel sayilarin tam bir kesinlikle tutulmasi mumkun degil ve bu VFP'nin degil tum decimal sayilarin problemi (IEEE floating point numbers). Tarkan'in dedigi gibi sayiyi 3.14 gibi gorseniz de aslinda 3.1415... diye gidiyor. Burada sasirmamaniz gereken 3 diye gordugunuz sayinin aslinda 2.9999999... olabilecegi. Bu tip roundation problemlerine karsi ya siz elle birseyler yapacaksiniz (round ntom() gibi) ya da currency kullanabilirsiniz. Currency'de decimal kisim 4 haneye yuvarlanir.
İyi günler
Ben hastanede foxpro ile oluşturulmuş bir program kullanıyorum
kullanırken
sıvı hacmini ölçüyoroz
hücre sayısını ölçüyoruz
toplam hücre yi belirlemek için sıvı hacmini hücre sayısı ile çarpmam gerekli
fakat bunu programda yapamıyorum
kısaca basit matemetiksel işlem nasıl yapılır
teşekürler
Baya * ile. Ornegin:
hacim = 100
hucre = 20
? m.hucre * m.hacim
Tabii senin sormak istediginin bu oldugunu sanmiyorum. Biraz detay verseydin, ornek veri, nerede nasil yapmak istiyorsun filan belki o zaman ise yarar bir yol bulurduk.
Not: Hastanede derken, hangi hastane ve gorevin ne? Ben de doktor oldugumdan merak ettim.
fox4um » Veritabanı, Tablo, View, Index ve SQL Syntax » table da float ?