将较大的字符串值转换为数字 laravel。 (int) 给出错误的值

Posted

技术标签:

【中文标题】将较大的字符串值转换为数字 laravel。 (int) 给出错误的值【英文标题】:convert large values of string to number laravel. (int) gives wrong value 【发布时间】:2020-04-06 10:35:07 【问题描述】:

当我这样做时:

$var = (int)('5000');
dd($var);  //outputs 5000
$query = Mymodel::find($id);
dd($query->loan_amount); //outputs "1,040,000.00"

还有:

$var = (int)($query->loan_amount);
dd($var);  //outputs 1

最后:

$query = Mymodel::find($id);
dd($query->loan_amount); //outputs the picture below

我可以知道为什么吗?以及如何修复大数字?

【问题讨论】:

无法复现,你用的是什么版本的 Laravel/php 你 100% 确定它是字符串 '1040000' 吗?没有其他符号,也没有一个零是字母“O”? Laravel 框架 5.8.36 || PHP 7.3.9 @kerbholz 请检查您的输入是否准确1040000 字符串 1,040,000.00 在转换为整数时将转换为 1,因为逗号 - 它将其解释为小数分隔符。 【参考方案1】:

Model Collection104000 但输出显示1,040,000.00。所以你可能用过Accessor / Mutator

你可以试试这个转换,

// remove `,` then convert.
$loan_amount = (int) (str_ireplace(',', '', $query->loan_amount));
dd($loan_amount);

另一种方式

laravel 中格式化model attributes 的标准方法是accessors & mutators,请查看。

【讨论】:

以上是关于将较大的字符串值转换为数字 laravel。 (int) 给出错误的值的主要内容,如果未能解决你的问题,请参考以下文章

如何使C++将数字转换为ASC2码表中对应的符号输出?

如何在 laravel 迁移中将字符串转换为布尔值?

c语言中如何将一个字符ascii码转换为整型数

同时替换多个值 - 为了将字符串转换为数字

将数字n转换为字符串并保存到s中

C语言中如何把浮点型转换为字符型