先上例子:

<?php
$money = 100;
$rate = 1.15;
$result = $money * $rate; var_dump( intval( $result ) );
var_dump( $result ); ?>

输出结果为:

int(114) 
float(115)

  

为什么会出现这样的现象呢???

其实,PHP的float是一种弱类型变量,在进行运算时,如果参与运算的值有float,那么得到的结果也是float类型的;

如上:本来得到的115,但是,实际上存储的是149.9999999999......

这个时候,你若是将他强制转换为整数,那小数点后面就会丢失了!!!

那如何避免这个精度的问题呢???

要避免这个问题,其实很简单,只要运算的过程中,将参数运算的数用整数来代替,就行了;

<?php
$money = 100;
$rate = 115;
$result = $money * $rate /100; var_dump( intval( $result ) );
var_dump( $result ); ?>

  

输出结果为:

int(115) 
int(115)

PHP中float变量转换为int时,结果有误的问题!的更多相关文章

  1. Java进阶(二十三)java中long类型转换为int类型

    java中long类型转换为int类型 由int类型转换为long类型是向上转换,可以直接进行隐式转换,但由long类型转换为int类型是向下转换,可能会出现数据溢出情况: 主要以下几种转换方法,供参 ...

  2. java中long类型转换为int类型

    由int类型转换为long类型是向上转换,可以直接进行隐式转换,但由long类型转换为int类型是向下转换,可能会出现数据溢出情况: 主要以下几种转换方法,供参考: 一.强制类型转换 [java] l ...

  3. 【MYSQL】在脚本中使用变量-执行脚本时传参

    在shell脚本里可以定义变量,并在执行脚本时任意传参. #!/bin/bashdb_name=$1 #将第一个值赋给db_name变量sql_name=$2 #将第二个值赋给sql_name变量my ...

  4. golang中float类型转换成int类型

    package main import ( "fmt" "strconv" ) func f2i(f float64) int { i, _ := strcon ...

  5. java中byte转换int时为何与0xff进行与运算

    在剖析该问题前请看如下代码 public static String bytes2HexString(byte[] b) {  String ret = "";  for (int ...

  6. [转]java中byte转换int时为何与0xff进行与运算

    在剖析该问题前请看如下代码public static String bytes2HexString(byte[] b) {  String ret = "";  for (int ...

  7. 浅谈JavaScript中的变量、参数、作用域和作用域链

    基本类型和引用类型 在JavaScript中有两种数据类型值.基本类型值和引用类型值.基本类型值指的是简单的数据段,而引用类型值指的是可能由多个值构成的对象.在JavaScript中有5种基本数据类型 ...

  8. 函数中声明变量不用Var的情况

    我们都知道函数中声明变量不用Var时这个变量会成为全局变量,但是并不是函数一开始执行就会把它变为全局变量,必须执行到这条语句. 看一段代码 function f(){    alert(a);    ...

  9. 将 IDENTITY 转换为数据类型 int 时出现算术溢出错误。

    IDENTITY标识列为int类型,取值范围为-2^32到2^31-1.当增长值超过这个最大值时,我在SQL Server 2008 R2 x64上试验的结果是: 将 IDENTITY 转换为数据类型 ...

随机推荐

  1. setInterval和setTimeout的区别

    setInterval会每隔指定的毫秒数后反复执行指定代码. setTimeout只会在指定的毫秒数后执行一次指定代码. setInterval的用法: // 创建(创建后即开始计时) var int ...

  2. &与&&的区别

    &是“逻辑与”(“按位与”“位运算符”),一定要判断完所有的条件才能确定到底返回true还是false. &&是“短路与”(“逻辑运算符”),当从左至右判断时,一旦出现有一个条 ...

  3. SSH原理与运用

    SSH是每一台Linux电脑的标准配置. 随着Linux设备从电脑逐渐扩展到手机.外设和家用电器,SSH的使用范围也越来越广.不仅程序员离不开它,很多普通用户也每天使用. SSH具备多种功能,可以用于 ...

  4. i++问题

    例题,以下代码的输出结果是什么? #include <stdio.h> int main() { ,,,,}; int *ptr = arr; *(ptr++) += ; printf(& ...

  5. td元素

    一.设置td的宽和高,不设置table的宽和高 1. 当td的值为具体数值时 a. td显示的宽按设置的数值变动,但宽度不会大于父元素:若强行将宽设置的大于父元素的宽,会被系统无视,即最大宽度为父元素 ...

  6. jQuery:常用方法一览

    Attribute:$(”p”).addClass(css中定义的样式类型); 给某个元素添加样式$(”img”).attr({src:”test.jpg”,alt:”test Image”}); 给 ...

  7. OC基础--简介

    OC简介: 1986年,BradCox(布莱德·考克斯)在第一个纯面向对象语言Smalltalk基础上写成了Objective-C语言. 1985年,被赶出苹果公司的Steve Jobs成立了NeXT ...

  8. OVM-V1.2 版发布,新增实时监控、支持一键升级

    OVM是国内首款.完全免费.企业级--混合虚拟化管理平台,OVM是从中小企业目前的困境得到启发,完全基于国内企业特点开发,更多的关注国内中小企业用户的产品需求. OVM-V1.2 该版本功能变动如下: ...

  9. 探索javascript----我对渐变轮播图的理解

    对于一个没有编程基础的人来说,我时常希望能有人告诉我,当我们看到一个效果的时候,该怎样有条理地分析出它的行为,而我自己有必要加强这方面的 自省,对于一个轮播图我是这样看的,自动播放必然带有一个定时器, ...

  10. a few changes of Android 5.0

    1.Service Intent must be explicit Intent serviceIntent = new Intent(context,MyService.class);context ...