Otomatik ondalık sayı SQL veya PHP biçimlendirme?

3 Cevap php

Benim DB, çoğu sayısal değerleri tip ONDALIK (10,6) vardır. Onlar para sütunlar vardır.

Ben mysql numaralarını almak Şimdi, ben böyle bir şey olsun

34.123456 //I want these
0.987654
500.000000 //I do not want these
1.000000

Bu numaralar otomatik oldukları zaman tamsayılar gibi göstermek ve ben örneğin olsun, böylece noktadan sonra benim istenen hassasiyetle ondalık korumak zorunda mümkün mü

34.123456
0.987654
500
1

3 Cevap

İstediğiniz tüm görüntülenen basamak değiştirmek için ise, o zaman %g formatlayıcıyla printf kullanımı ve hassas basamak sayısını belirtebilirsiniz:

printf ("%.10g", 123.456); // outputs "123.456"
printf ("%.10g", 123.456000000); // outputs "123.456"
printf ("%.10g", 123.000000000); // outputs "123"
printf ("%.10g", 1.234567891); // outputs "1.234567891"

PHP, sen çıktı önce basit bir tamsayı karşılaştırma yapabiliriz:

echo ((int) $var == $var) ? (int) $var : $var;

Hızlı / kirli bir örnek olarak, bu kodu:

$var = '500.01';
echo ((int) $var == $var) ? (int) $var : $var;
echo "\n";
$var = '500.00';
echo ((int) $var == $var) ? (int) $var : $var;

Üretir:

500.01
500

You can CAST, örneğin SQL tarafında bu hassasiyet zorlamak için ne gibi türü değer:

SELECT 
  CASE myNumber MOD 1 
    WHEN 0 THEN CAST(myNumber AS decimal(10,0)) 
    ELSE myNumber 
  END 
FROM myTable;