You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中如何显示0.001这类小数数值?

解决Laravel视图中小数数值无法正常显示的问题

我来帮你拆解这个问题,找到核心原因和可行的解决方案:

问题核心分析

首先得明确你遇到的矛盾点:

  • 单条记录的$member->amount用number_format()无论是在标签内容还是data-end属性里都能正常工作
  • 但通过sum('amount')计算出来的$total_deposit,在标签内容里格式化显示没问题,放到data-end里却失效了
  • 你提到的{{ $total_deposit,3 }}是Blade语法错误,这种写法会直接抛出异常,绝对不是正确的用法

为啥会有这个差异?因为number_format()会把数值转成字符串类型(比如0.001会变成"0.001",如果有千分位分隔符就是"0,001"),而你用的数字滚动动画插件只认纯数字(浮点/整数)类型的data-end值,根本处理不了带格式的字符串。

正确解决方案

我们需要分开处理:给插件传原始数值,给用户看格式化后的内容,具体代码如下:

视图层正确代码

<div class="num" 
     data-start="0" 
     data-end="{{ $total_deposit }}" 
     data-postfix="{{ $basic->symbol }}" 
     data-duration="1500" 
     data-delay="0">
    {{ number_format($total_deposit, 3) }}
</div>
  • data-end直接用原始的$total_deposit数值,保证插件能识别并执行滚动动画
  • 标签内容里用number_format()格式化,确保页面展示的小数格式符合需求

额外优化:避免浮点精度问题

如果sum()计算时出现浮点精度丢失(比如多个小数相加后结果不对),可以在控制器里用DB::raw()强制保留小数位:

// 控制器中修改total_deposit的赋值代码
$data['total_deposit'] = Deposit::whereUser_id(Auth::user()->id)
    ->sum(DB::raw('CAST(amount AS DECIMAL(10,3))'));

这样数据库层面就会按3位小数来计算总和,避免PHP浮点运算带来的精度误差。

为啥之前的写法失效?

你之前写的data-end="{{number_format( $total_deposit,3) }}"会把数值转成字符串,比如0.001变成"0.001",很多数字滚动插件会把这个字符串当成无效值(或者直接识别为0),所以动画就不工作了。直接传递原始的浮点数值,插件就能正确识别并执行滚动效果。

验证步骤

  1. 先在控制器里加dd($total_deposit),确认计算出来的总和是正确的小数数值
  2. 打开浏览器开发者工具,查看元素的data-end属性值是纯数字(比如0.001)而不是带引号的字符串
  3. 测试小数数值的滚动动画是否正常执行

内容的提问来源于stack exchange,提问作者Waqar Ali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:17:29