Ben arka uç olarak ön uç ve MySQL gibi PHP ile küçük bir finans uygulaması var. Ben eski önyargıları var, ve ben sent bir tamsayı olarak MySQL para değerleri depolamak. Benim HTML formları "156,64" gibi, dolar değerlerin girilmesine izin verir ve ben sent dönüştürmek olduğunu PHP kullanmak ve sonra veritabanında sent saklayın.
Ben her iki formdan dolar değer temizler ve sent dönüştüren bir işlevi var. Ben önde gelen metin şerit, ben sondaki metin şerit, ben 100 ile çarpın ve bir tamsayı dönüştürmek. Bu son adımdır
$cents = (integer) ($dollars * 100);
Bu sürekli 15663 sent dönüştüren '156 .64 'gibi çok az değerler haricinde hemen hemen her şey için çalışıyor. Neden bunu yapıyor?
Eğer bunu yaparsam:
$cents = (integer) ($dollars * 100 + 0.5);
Daha sonra sürekli olarak çalışır. Neden o yuvarlama değeri eklemek gerekiyor?
Ayrıca, tamsayılar olarak para miktarlarda depolanması ve değerler, kayan noktalı değil hakkında benim önyargılar, artık gerekli olduğunu? Modern şamandıra hesaplamalar% 100 doğru muhasebe tutmak için güzel yuvarlak ve doğru para değerleri yeterli üretecek?