sorunu çözmek için PHP ile yapabileceğiniz bir şeydir:
function string_to_float($foo){
if($foo*1==$foo && !empty($foo)){
return $foo*1;
} else {
return $foo;
}
}
string_to_float($row->some_decimal_field);
asıl soru, Neden ondalık dize türünü dönüştürmek gerekir? Eğer bunu matematikte kullanmaya çalışıyorsanız, php sizin için otomatik olarak dönüşüm yapacaktır. Ondalık bir dize, aynı değere sahip bir yüzeye eşdeğerdir.
$foo = "1.2";
$bar = 1.2;
if($foo===$bar){
$equivalent = "is";
} else {
$equivalent = "is not";
}
print '"1.2" '.$equivalent.' equal to 1.2 in type and value<br />';
if($foo==$bar){
$equivalent = "is";
} else {
$equivalent = "is not";
}
print '"1.2" '.$equivalent.' equal to 1.2 in value<br />';
$foo = "1.2"*1;
$bar = 1.2;
if($foo===$bar){
$equivalent = "is";
} else {
$equivalent = "is not";
}
print '"1.2"*1 '.$equivalent.' equal to 1.2 in type and value<br />';
dönecektir: Normal operatörlerini kullanarak şeritte herhangi matematik yaparsanız bir kayan noktalı veri türüne sabit nokta veri türü döküm olacağını
"1.2" is not equal to 1.2 in type and value
"1.2" is equal to 1.2 in value
"1.2"*1 is equal to 1.2 in type and value
Burada basit bir testtir. Yukarıda belirtildiği gibi GMP kullanmıyorsanız, garip sonuçlar elde edeceksiniz veya sayılarınızın tuhaf tahminlerini alacaksınız. –
Tamam Tamam, doğru cevap olmayabilir ama aynı şekilde yapmak isteyen başkalarına yardımcı olabilecek bir cevaptır. – amaster