phpbcsub
Ⅰ php中3个小数的计算,如134.7-52.5 - 82.2,为什么结果不是0而是一个奇怪的科学计数法
楼上的回答很详细了,而且,这不仅仅是php的问题,你在js里console.log(134.7-52.5 - 82.2)
也得不到0的,
Ⅱ 请教,php保留两位小数,但不四舍五入
round() 函数知橡握
语法
round(x,prec)
参数
x
可选。搭庆规定要舍入的数字。
prec
可选。规定小数点后的位数。
说明
返回将 x 根据指定精度 prec (十进制小数点后数字的数目)进行四舍如森五入的结果。prec 也可以是负数或零(默认值)。
Ⅲ PHP计算百分比的公式函数,如何把数值装进计算
1、按题意字面理解,不用函数,直接在单元格输入公式“=25/336”,回车,即可返回所需比例值。 2、如果336人是一列(如A1:A336)姓名明细,25人是在另列(如B1:B336)用“派出”、“留用”、“等待”等字样标出,则可在任意单元格输入公式“=COUNTIF(B1:B336,"派出")/COUNTA(A1:A336)”进行计算。 建议,将你的示例上传,以便有的放矢。
Ⅳ php 字符串0.01124怎么转换成浮点型不失精度
使用(float)强转即可:
<?php
$str='0.01124';
$num=(float)$str;
var_mp($num);
/*
float(0.01124)
*/
Ⅳ PHP-bc函数及其应用详解
bcadd —— 两个任意精度数字的加法计算 (PHP 4, PHP 5, PHP 7, PHP 8)
bcadd ( string $num1 , string $num2 , ?int $scale = null ): string
注:对 num1 和 num2 求和。
参数:
num1 — 左操作数,字符串类型。
num2 — 右操作数,字符串类型。
scale — 此可选参数用于设置结果中小数点后的小数位数。也可通过使用 bcscale() 来设置全局默认的小数位数,用于所有函数。如果未设置,则默认为 0。 现在 scale 可以为 null。
返回值: 以字符串返回两个操作数求和之后的结果。
范例:
bcsub —— 两个任意精度数字的减法 (PHP 4, PHP 5, PHP 7, PHP 8)
bcsub ( string $num1 , string $num2 , ?int $scale = null ): string
注: num1 减去 num2 。
参数:
num1 — 左操作数,字符串类型。
num2 — 右操作数,字符串类型。
scale — 此可选参数用于设置结果中小数点后的小数位数。也可通过使用 bcscale() 来设置全局默认的小数位数,用于所有函数。如果未设置,则默认为 0。 现在 scale 可以为 null。
返回值: 以 string 类型返回减法之后的结果。
范例:
bcmul —— 两个任意精度数字乘法计算 (PHP 4, PHP 5, PHP 7, PHP 8)
bcmul ( string $num1 , string $num2 , ?int $scale = null ): string
注: num1 乘以 num2 。
参数:
num1 — 左操作数,字符串类型。
num2 — 右操作数,字符串类型。
scale — 此可选参数用于设置结果中小数点后的小数位数。也可通过使用 bcscale() 来设置全局默认的小数位数,用于所有函数。如果未设置,则默认为 0。 现在 scale 可以为 null。
返回值: 以 string 类型返回减法之后的结果。
范例:
bcp —— 两个任意精度的数字除法计算 (PHP 4, PHP 5, PHP 7, PHP 8)
bcp ( string $num1 , string $num2 , ?int $scale = null ): string
注: num1 除以 num2 。
参数:
num1 — 左操作数,字符串类型。
num2 — 右操作数,字符串类型。
scale — 此可选参数用于设置结果中小数点后的小数位数。也可通过使用 bcscale() 来设置全局默认的小数位数,用于所有函数。如果未设置,则默认为 0。 现在 scale 可以为 null。
返回值: 以 string 类型返回减法之后的结果。
范例:
bccomp —— 比较两个任意精度的数字 (PHP 4, PHP 5, PHP 7, PHP 8)
bccomp ( string $num1 , string $num2 , ?int $scale = null ): int
注: 比较 num1 和 num2 , 并且返回整型数字的结果。
参数:
num1 — 左边的运算数,是一个字符串。
num2 — 右边的运算数,是一个字符串。
scale — 可选的 scale 参数被用作设置指示数字, 在使用来作比较的小数点部分。
返回值: 两个数相等时返回 0; num1 比 num2 小时返回 -1; 其他则返回 1。现在 scale 可以为 null。
范例:
bcmod —— 任意精度数字取模 (PHP 4, PHP 5, PHP 7, PHP 8)
bcmod ( string $num1 , string $num2 , ?int $scale = null ): string
注: 对 num1 使用 num2 取模。 除非 num2 是零,否则结果必定和 num1 有相同的符号。
参数:
num1 — string 类型的被除数。
num2 — string 类型的除数。
scale — 现在 scale 可以为 null。
返回值: 返回字符串类型取模后的结果,如果 num2 为 0 则返回 null。
范例:
bcpow—— 任意精度数字的乘方 (PHP 4, PHP 5, PHP 7, PHP 8)
bcpow ( string $num , string $exponent , ?int $scale = null ): string
注: num 的 exponent 次方运算。
参数:
num — string 类型的底数。
exponent — string 类型的指数。 如果指数不是整数,将被截断。 指数的有效范围取决于平台,但起码支持 -2147483648 到 2147483647 的范围。
scale — 此可选参数用于设置结果中小数点后的小数位数。也可通过使用 bcscale() 来设置全局默认的小数位数,用于所有函数。如果未设置,则默认为 0。
返回值: 返回字符串类型的结果。
范例:
bcpowmod —— 先取次方然后 取模 。 (PHP 5, PHP 7, PHP 8)
bcpowmod ( string $num , string $exponent , string $molus , ?int $scale = null ): string
注: 先取次方然后取模。
参数:
base — 左操作数。它是一个字符串类型的参数。
exponent — string 类型的指数。 指数的正确操作数。
molus — string 类型的 参 数。 接受表示模数的操作数。
scale — 一个整数类型参数。它说明 ( base exponent %mod ) 结果中小数点后的位数。其默认值为 0。
返回值: 该函数将结果作为字符串返回。或者,如果模数为 0 或指数为负,则返回 False。
范例:
bcscale —— 设置/获取所有 bc math 函数的默认小数点保留位数 (PHP 4, PHP 5, PHP 7, PHP 8)
bcscale ( int $scale ): int
设置所有 bc math 函数在未设定情况下的小数点保留位数。
bcscale ( null $scale = null ): int
注: 获取当前的小数点保留位数。
参数:
scale — 小数点保留位数。
返回值: 设置的时候,返回之前的小数点保留位数。否则就是返回当前的位数。
范例:
bcsqrt —— 任意精度数字的二次方根 (PHP 4, PHP 5, PHP 7, PHP 8)
bcsqrt ( string $num , ?int $scale = null ): string
注: 返回 num 的二次方根。
参数:
num — string 类型的操作数 。
scale — 此可选参数用于设置结果中小数点后的小数位数。也可通过使用 bcscale() 来设置全局默认的小数位数,用于所有函数。如果未设置,则默认为 0。
返回值: 以 string 类型返回二次方根的结果,如果 num 是负数则返回 null。
范例:
Ⅵ php里面bcadd是什么意思
PHP 为任意精度数学计算提供了二进制计算器(Binary Calculator),它支持任意大小和精度的数字,以字符串形式描述
bcadd — 加法
bccomp — 比较
bcdiv — 相除
bcmod — 求余数
bcmul — 乘法
bcpow — 次方
bcpowmod — 先次方然后求余数
bcscale — 给所有函数设置小数位精度
bcsqrt — 求平方根
bcsub — 减法
Ⅶ 如何转换的IPv6从二进制存储在Mysql-php,mysql,ipv6
下面是函数我从和DECIMAL(正渣39,0)格式转换IP地址。他们是inet_ptod和inet_dtop为“呈现到十进制”和姿清搏“十进制到演示文迹祥稿”。它需要IPv6和在PHP
bcmath时支持。 /**
* Convert an IP address from presentation to decimal(39,0) format suitable for storage in MySQL
*
* @param string $ip_address An IP address in IPv4, IPv6 or decimal notation
* @return string The IP address in decimal notation
*/
function inet_ptod($ip_address)
{
// IPv4 address
if (strpos($ip_address, ':') === false && strpos($ip_address, '.') !== false) {
$ip_address = '::' . $ip_address;
}
// IPv6 address
if (strpos($ip_address, ':') !== false) {
$network = inet_pton($ip_address);
$parts = unpack('N*', $network);
foreach ($parts as &$part) {
if ($part < 0) {
$part = bcadd((string) $part, '4294967296');
}
if (!is_string($part)) {
$part = (string) $part;
}
}
$decimal = $parts[4];
$decimal = bcadd($decimal, bcmul($parts[3], '4294967296'));
$decimal = bcadd($decimal, bcmul($parts[2], '18446744073709551616'));
$decimal = bcadd($decimal, bcmul($parts[1], '79228162514264337593543950336'));
return $decimal;
}
// Decimal address
return $ip_address;
}
/**
* Convert an IP address from decimal format to presentation format
*
* @param string $decimal An IP address in IPv4, IPv6 or decimal notation
* @return string The IP address in presentation format
*/
function inet_dtop($decimal)
{
// IPv4 or IPv6 format
if (strpos($decimal, ':') !== false || strpos($decimal, '.') !== false) {
return $decimal;
}
// Decimal format
$parts = array();
$parts[1] = bcdiv($decimal, '79228162514264337593543950336', 0);
$decimal = bcsub($decimal, bcmul($parts[1], '79228162514264337593543950336'));
$parts[2] = bcdiv($decimal, '18446744073709551616', 0);
$decimal = bcsub($decimal, bcmul($parts[2], '18446744073709551616'));
$parts[3] = bcdiv($decimal, '4294967296', 0);
$decimal = bcsub($decimal, bcmul($parts[3], '4294967296'));
$parts[4] = $decimal;
foreach ($parts as &$part) {
if (bccomp($part, '2147483647') == 1) {
$part = bcsub($part, '4294967296');
}
$part = (int) $part;
}
$network = pack('N4', $parts[1], $parts[2], $parts[3], $parts[4]);
$ip_address = inet_ntop($network);
// Turn IPv6 to IPv4 if it's IPv4
if (preg_match('/^::\d+.\d+.\d+.\d+$/', $ip_address)) {
return substr($ip_address, 2);
}
return $ip_address;
}