PHP:计算小数点后位数

本文提供两种方法,一种将小数变成字符串,然后用”.“来截取,去.后的子字符串长度。还有一种是讲小数*10的N次方,比如10的8次方再对8次方取余数,再不断对10求余,直到对10求余的结果不为0。

相比来说,第一种方法要好不少,理由是这样的,比如1.000004在很边界的时候或者0.99999这样子PHP处理会有问题,会有误差,导致得到的位数不一样。而且精度难以把握,所以处理这种跟边界有关的问题最后能用字符串还是字符串来做。

第一种

private function _getFloatLength($num) {
$count = 0;

$temp = explode ( '.', $num );

if (sizeof ( $temp ) > 1) {
$decimal = end ( $temp );
$count = strlen ( $decimal );
}

return $count;
}

第二种

function getfloatlength($a){
	if(($a-(int)$a)<1E-9){
		$count=0;
	}
	$a=fmod(1E9*$a,1E9);
	while($a%10==0){
		if($a==0)break;
		$a=$a/10;
		$count--;
	}
	return count;
}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索字符串
, function
, count
, php 一元n次方程式
, 位数
, 小数
, 边界
, decimal小数位数
, 截取小数
小数计算
,以便于您获取更多的相关知识。

时间: 2024-10-26 10:50:40

PHP:计算小数点后位数的相关文章

java bigdecimal保存到mysql数据库不保留小数点后位数问题

问题描述 java bigdecimal保存到mysql数据库不保留小数点后位数问题 单元测试执行insert方法: set值如下: sp.setMaximumDd(new BigDecimal("-0.1109")); sp.setWinningPct(new BigDecimal("0.6217")); sp.setWinningMonth(new BigDecimal("0.80")); 插入到mysql数据库中值为什么变成了这样: ![图

js小数计算小数点后显示多位小数的实现方法_javascript技巧

首先写一个demo 重现问题,我使用的是一个js在线测试环境[打开] 改写displaynum()函数 function displaynum(){var num = 22.77;alert(num + 10);} 点击Show按钮 结果显示32.769999999996 出现了N多小数. 也并不是所有数字都会出现这种现象, 除了 22.99  2.777 , 好像这几个数字也没什么特殊. 查了一些资料, 一是JS浮点数计算的bug, 另一个是和计算机最终转换成二进制计算有关系, 但是为什么不是

javascript中RegExp保留小数点后几位数的方法分享_javascript技巧

复制代码 代码如下:     <script type="text/javascript">var db = "0.123456789";//原数值var num = 5;//小数点后位数var re = new RegExp("\d+\.\d{" + num + "}","gm"); alert(db.match(re));</script></td>   </t

qt qtcreat-QString 怎么保留小数点后两位数

问题描述 QString 怎么保留小数点后两位数 QString str = QString(""移动(%1 mm)"").arg(L);double L = 1.34567; 请问各位大神,怎么使str在Label显示时小数点后只有两位数字,菜鸟一枚,求各位大神指教. 解决方案 QString QString::number(double n char format = 'g' int precision = 6) [static]Returns a string

js取float型小数点后两位数的方法

 js中取小数点后两位方法最常用的就是四舍五入函数了,前面我介绍过js中四舍五入一此常用函数,这里正好用上,下面我们一起来看取float型小数点后两位一些方法总结 用Javascript取float型小数点后两位,例22.127456取成22.13,如何做?   1.丢弃小数部分,保留整数部分   parseInt(5/2)   2.向上取整,有小数就整数部分加1   Math.ceil(5/2)   3,四舍五入.   Math.round(5/2)   4,向下取整   Math.floor

js取float型小数点后两位数的方法_javascript技巧

以下我们将为大家介绍 JavaScript 保留两位小数的实现方法:四舍五入以下处理结果会四舍五入: var num =2.446242342; num = num.toFixed(2); // 输出结果为 2.45 不四舍五入以下处理结果不会四舍五入: 第一种,先把小数边整数: Math.floor(15.7784514000 * 100) / 100 // 输出结果为 15.77 第二种,当作字符串,使用正则匹配: Number(15.7784514000.toString().match(

保留小数点位数-double保留小数点后两位的问题,跪求大神详解

问题描述 double保留小数点后两位的问题,跪求大神详解 图片下边为对应的后台代码. 图片中的合计怎么 小数点后边那么多位?求大神详解. private double heji1=0; private double heji2=0; private double heji3=0; private double heji4=0; public String get() throws Exception { this.init(); ruKu = dao.get(id); return SUCCE

excel怎么快捷地将所有数据保留小数点后两位?

  excel怎么快捷地将所有数据保留小数点后两位?在大数据时代,数据需要被系统,快捷地被分类和计算,那么在excel中怎样才能快捷地将所有数据保留两位小数,今天小编来给大家分享一下. 步骤 这是小编随意输入的原始数据,可以看到有数据有小数点后三位,有的有一位小数,有的没有小数.总之数据很参差不齐. 选中需要保留两位小数的数据后,单击"开始"选项卡下面的"数字组"中的对话框启动器(数字组右下角),弹出"设置单元格格式"对话框. 在"数字

实现js保留小数点后N位的代码

 在JS中,一般实现保留小数点后N位的话,都是利用toFixed函数   代码如下: <script language="javascript"> document.write("<h1>JS保留两位小数例子</h1><br>"); var a=2.1512131231231321; document.write("原来的值:"+a+"<br>"); document