处理数字等一系列数学函数应用
6

前言

本文摘自 PHP经典实例

取一个数的对数

对于以 e 为底的对数(自然对数),可以使用 log():

// $log 约为 2.30258
$log = log(10);

对于以10为底数的对数,可以使用 log10() :

//$log10 == 1
$log10 = log10(10);

对于使用其他底数的对数,要把这个底数作为第二个参数传入 log():

// 以2为底,10的对数月3.32
$log2 = log(10,2);

log() 和 log10() 都只适用于大于0的数,如果传入一个等于或者小于0的数,这俩个函数会返回 NAN ,这代表不是一个数。 (not a number)

对数函数是6类基本初等函数之一。对数的定义如下:摘自百度百科
如果 ax=N ( a>0 且 a!=1),那么数 x 叫做以 a 为底 N 的对数,记作 x=logaN,读作以 a 为底 N 的对数,其他 a 叫做对数的底数,N 叫做真数。

计算指数

要计算e的幂,可以使用 exp():

//$exp = exp(2);

要计算某个数的幂,可以使用 pow()

幂指乘方运算的结果。
n^m 指代 m 个 n
// 2 的 e 次方
pow( 2,M_E );
// is_nan( pow( -2,-2.5) ) 因为 -2 的分数指数不是一个实数 返回true ! 懵逼。
pow( -2,-2.5 );

M_E 是内置常量,是 e 的近似值,等于2.718~~~~,所以 exp($n) 和 pow( M_E,$n ) 是相等的。

格式化数字

场景: 希望显示一个访问页面的人数或者查看有多少人投票了某个选项,显示这些人的百分比。

number_format():

//需要小数点和千分位分隔符等特定字符。
$number = 1234.56;
$form1 = number_format( $number ); //默认格式化千分位分割符。 返回 1,235 因为没有指定保留几位小数,所以四舍五入。
$form2 = number_format( $number ); // 第二个参数指定保留几位小数
$form3 = number_format( $number, 2 , ',' , '.' ); //第三个参数指定小数点分割符,第四个参数指定千分位分隔符。

如果事先不知道小数点有多少位,可以使用 explode 函数分割小数点,判断小数位的长度即可。

NumberFormatter 类

NumberFormatter 类提供了一种简便而强大的方法,可以为世界各地完成数字的格式化。

格式化货币值
$number = 1234.56;
//美国使用 $ , .
$usa = new NumberFormatter('en-us',NumberFormatter::CURRENCY);
$form1 = $usa->format($number);  // $1,234.56
//法国使用 , 和一个键盘上找不到的符号 暂且为 C,C 中间有两道横杠。
$france = new NumberFormatter('fr-Fr',NumberFormatter::CURRENCY);
$form2 = $france->format($number); // 1 234,56 C
美国格式化成欧元
$number = 1234.56;
$usa = new NumberFormatter('en-us',NumberFormatter::CURRENCY);
$form1 = $usa->formatCurrency($number, 'EUR');

正确输出复数

场景:希望根据变量的值正确的显示单词的复数形式。
跳过这章,因为作者给的方法就是用 if 去判断。!!!!

php

日积月累,争取写出原创文章。感谢阅读!

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 5

NumberFormatter 类的地址呢?

1周前
yema

@lovecn php内置扩展类

1周前

@yema 内置?没有啊
PHP Fatal error: Class 'NumberFormatter' not found

1周前
yema

可以的啊。这个是我在框架里测试的。在非框架环境也可以运行。是不是有扩展要开?我本地环境是可以使用的。
file

1周前
yema
1周前

  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!