PHP中float变量转换为int时,结果有误的问题!
先上例子:
<?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时,结果有误的问题!的更多相关文章
- Java进阶(二十三)java中long类型转换为int类型
java中long类型转换为int类型 由int类型转换为long类型是向上转换,可以直接进行隐式转换,但由long类型转换为int类型是向下转换,可能会出现数据溢出情况: 主要以下几种转换方法,供参 ...
- java中long类型转换为int类型
由int类型转换为long类型是向上转换,可以直接进行隐式转换,但由long类型转换为int类型是向下转换,可能会出现数据溢出情况: 主要以下几种转换方法,供参考: 一.强制类型转换 [java] l ...
- 【MYSQL】在脚本中使用变量-执行脚本时传参
在shell脚本里可以定义变量,并在执行脚本时任意传参. #!/bin/bashdb_name=$1 #将第一个值赋给db_name变量sql_name=$2 #将第二个值赋给sql_name变量my ...
- golang中float类型转换成int类型
package main import ( "fmt" "strconv" ) func f2i(f float64) int { i, _ := strcon ...
- java中byte转换int时为何与0xff进行与运算
在剖析该问题前请看如下代码 public static String bytes2HexString(byte[] b) { String ret = ""; for (int ...
- [转]java中byte转换int时为何与0xff进行与运算
在剖析该问题前请看如下代码public static String bytes2HexString(byte[] b) { String ret = ""; for (int ...
- 浅谈JavaScript中的变量、参数、作用域和作用域链
基本类型和引用类型 在JavaScript中有两种数据类型值.基本类型值和引用类型值.基本类型值指的是简单的数据段,而引用类型值指的是可能由多个值构成的对象.在JavaScript中有5种基本数据类型 ...
- 函数中声明变量不用Var的情况
我们都知道函数中声明变量不用Var时这个变量会成为全局变量,但是并不是函数一开始执行就会把它变为全局变量,必须执行到这条语句. 看一段代码 function f(){ alert(a); ...
- 将 IDENTITY 转换为数据类型 int 时出现算术溢出错误。
IDENTITY标识列为int类型,取值范围为-2^32到2^31-1.当增长值超过这个最大值时,我在SQL Server 2008 R2 x64上试验的结果是: 将 IDENTITY 转换为数据类型 ...
随机推荐
- easy ui datagrid 中getSelections方法只能获取一行数据
解决方案:设置 idField : "", // 设置标识
- 回车键转tab键解决方案二
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- redis教程
windows下安装redis: http://jingyan.baidu.com/article/49ad8bce40174f5834d8fa24.html redis教程: http://www. ...
- java 构造方法
class MyTestClass { public int Value; public boolean equals(MyTestClass obj){ return obj.Value ==thi ...
- Java实习生面试总结
之前写了一直存着当草稿,今天看了看. --------------------------------------------------------------------------------- ...
- bzoj 2875: [Noi2012]随机数生成器
#include<cstdio> #include<iostream> #include<cstring> #define ll long long using n ...
- 用Firefox的debugger来调试JavaScript
1.自我感觉比firebug更好用 https://developer.mozilla.org/zh-CN/docs/Tools/Debugger
- iOS 图片填充 UIImageView (contentMode)
掐指算下来做iOS开发也是有两年多的时间了,然后今天一个超级常用的控件让我颜面大跌,于是我准备把自己的丢人行径公之于众.如果您看到我这篇文章时和我一样,也是刚刚知道这项功能,那么您就当收获了一个... ...
- HDU 4352 XHXJ's LIS
奇妙的题. 你先得会另外一个nlogn的LIS算法.(我一直只会BIT.....) 然后维护下每个数码作为结尾出现过没有就完了. #include<iostream> #include&l ...
- 全面理解面向对象的 JavaScript (share)
以下分享自: http://www.ibm.com/developerworks/cn/web/1304_zengyz_jsoo/ 简介: JavaScript 函数式脚本语言特性以及其看似随 ...