首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >php确定浮动变量有两个小数位

php确定浮动变量有两个小数位
EN

Stack Overflow用户
提问于 2014-11-07 01:55:42
回答 6查看 6.3K关注 0票数 3

MySQL数据导入芒果数据库。

代码语言:javascript
复制
price float(15,2) in mysql, mongo is not float(15,2).

我想确定一个变量$price有两个小数位。

例如:100.00是对的,100或100.0是错的。

eg.1

代码语言:javascript
复制
$price = 100.00;

$price有两个小数点,是的。

eg.2

代码语言:javascript
复制
$price = 100.0;

$price没有两个小数点,这是错误的。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2014-11-16 22:40:54

每个人都在为浮点数在内部表示法中没有小数位这一事实而起舞。也就是说,在浮点数100中,== 100.0 == 100.00 == 100.000并且都以相同的数字表示,有效地100并且以这种方式存储。

此示例中的小数位数只有在数字表示为字符串时才具有上下文。在这种情况下,任何计算尾随小数点数的字符串函数都可以用于检查。

票数 3
EN

Stack Overflow用户

发布于 2014-11-07 02:06:42

我喜欢使用正则表达式来做这些事情。

代码语言:javascript
复制
function validateTwoDecimals($number)
{
   if(preg_match('/^[0-9]+\.[0-9]{2}$/', $number))
     return true;
   else
     return false;
}

(感谢弗雷德二世的更正)

票数 6
EN

Stack Overflow用户

发布于 2014-11-14 17:32:44

代码语言:javascript
复制
number_format($price, $numberOfDecimalDigits) === $price;

代码语言:javascript
复制
strrpos($price, '.') === strlen($price) - 1 - $numberOfDecimalDigits;

琐事:$price不应该被称为“浮动变量”。这是一个恰好表示浮点值的字符串。100.00作为浮点数有零小数位数,100.00 === 100有浮点数:

代码语言:javascript
复制
$price = 100.00;
echo $price; // output: 100
$price2 = (float)100;
echo $price === $price2; // ouput: 1
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26792784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档