在php中使用double/float

在php中使用double/float,php,floating-point,Php,Floating Point,可能重复: $y来自一个mysql数据库,其类型为“double(10,2)”,因此当我尝试echo$y时,其中一个可以工作;它的响应是两个小数 但现在我想把它乘以$b 比如说 10.20*2=20.40 但现在它就像: 10.20*2=20.4(只有一位小数) 我要两个小数,怎么办?我尝试了一些具有(双重)功能的东西,但没有真正起作用。怎么办?试试: 或者: $b = (float) $b; 但是,如果乘以10.20,它会自动转换为浮点。阅读上的PHP文档 如果它只是一个造型的东西: $

可能重复:

$y来自一个mysql数据库,其类型为“double(10,2)”,因此当我尝试echo$y时,其中一个可以工作;它的响应是两个小数

但现在我想把它乘以$b

比如说 10.20*2=20.40

但现在它就像: 10.20*2=20.4(只有一位小数)

我要两个小数,怎么办?我尝试了一些具有(双重)功能的东西,但没有真正起作用。怎么办?

试试:

或者:

$b = (float) $b;
但是,如果乘以10.20,它会自动转换为浮点。阅读上的PHP文档


如果它只是一个造型的东西:

$b = number_format($b, 2);
尝试:

或者:

$b = (float) $b;
但是,如果乘以10.20,它会自动转换为浮点。阅读上的PHP文档


如果它只是一个造型的东西:

$b = number_format($b, 2);
您可以使用:

number\u格式
功能:

string number_format ( float $number [, int $decimals = 0 ] )
如果您不想要默认格式:

string number_format ( float $number , int $decimals = 0 , string $dec_point = '.' , string $thousands_sep = ',' )
您可以使用:

number\u格式
功能:

string number_format ( float $number [, int $decimals = 0 ] )
如果您不想要默认格式:

string number_format ( float $number , int $decimals = 0 , string $dec_point = '.' , string $thousands_sep = ',' )

通过使用sprintf并将其存储为字符串,可以确保将其存储在小数点后两位:

$z = sprintf('%.2f', $y * $b);

%.2f
确保小数点后始终有两位数字。

您可以通过使用sprintf并将其存储为字符串来确保将其存储在小数点后两位:

$z = sprintf('%.2f', $y * $b);


%.2f
确保小数点后始终有两位数字。

您描述的数据类型是固定点数,而不是浮点数(float)。PHP没有这样的数据类型,但是它可以为您浮动。看起来这就是您要寻找的,格式化输出。

您描述的数据类型是固定点号,而不是浮点数(float)。PHP没有这样的数据类型,但是它可以为您浮动。看起来这就是您要寻找的,格式化输出。

将其转换为浮点并不能确保小数点后两位。但我不是落选者。将其作为浮点数并不能保证小数点后两位。但我不是悲观的选民。这部分是有效的。。。但是1*1670.10=1670,10这是不正确的:(什么是“部分”意思?第三和第四个参数是dec_point和数千_sep,所以如果你想要1670.10,你可以使用数字格式($y*$b,2,“,”,“”)。我知道你不想要字符串,因为你想做更多的数学运算,但如果你想做更多的数学运算,为什么你关心1或2个浮点数…你应该只关心最后将打印的字符串。好的,我将其更改为$z=number_格式($y*$b,2,,“”);正如php手册所说,谢谢。这部分是有效的……但是1*1670.10=1670,10这是不正确的:(什么是“部分”的意思?第三和第四个参数是dec_point和数千_sep,所以如果你想要1670.10,你可以使用数字格式($y*$b,2,“,”)。我知道你不想要字符串,因为你想做更多的数学运算,但如果你想做更多的数学运算,为什么你关心1或2个浮点数…你应该只关心最后将打印的字符串。好的,我将其更改为$z=number_格式($y*$b,2,,“”);正如php手册所说,谢谢。它有一个浮点类型,但它是隐藏的。在php最常见的级别中,您使用标量类型,但在较低的级别中,您确实使用真类型。例如,函数
is_int
中有一个证据,当您说
is_int(“14”)时,它会回答
false
。您也可以使用cast运算符。因此Jean-Philippe Bond给出了正确的答案。@artragis您没有理解我的观点。我说过,PHP没有固定点数据类型(如MySQL中的十进制(10,2))当然,它有浮点数,我不知道它是如何隐藏的。哦,是的,你错了。它有一个浮点数类型,但它是隐藏的。在php最常见的级别上,你使用标量类型,但在较低的级别上,你确实使用真类型。一个证据是在函数
is_int
中,例如,当你说
时,它回答
false
is_int(“14”)
。您也可以使用cast运算符。因此Jean-Philippe Bond给出了正确的答案。@artragis您没有领会我的意思。我说过,PHP没有固定点数据类型(如MySQL中的十进制(10,2)).当然,它有浮点数,我不知道如何隐藏。哦,是的,你是对的,误读了你。这个对我不起作用,因为我以后要用$z做更多的数学运算。所以我不能将它存储为字符串,你可以将它重新放回浮点数。这个对我不起作用,因为我以后要用$z做更多的数学运算。所以我不能将它存储为字符串,你可以把它扔回浮子里。