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

浮点数减法返回值异常,如何获取正确的0.3结果?

解决float小数精度问题

出现这个结果是因为单精度浮点数(float)的二进制存储特性:十进制的0.3无法被二进制浮点数精确表示,你定义的2.3f实际上存储的是一个接近2.3的近似值,所以减去整数部分后得到的是0.29999995而不是精确的0.3。

以下是几种可行的解决方法:

  • 使用decimal类型替代float
    decimal是十进制浮点数,专门用于需要精确十进制计算的场景,能准确表示0.3这类数值:

    decimal w = 2.3m;
    Console.WriteLine(w - (int)w);
    

    执行后会输出精确的0.3。

  • 对结果进行四舍五入
    如果必须使用float,可以通过Math.Round将结果四舍五入到指定小数位:

    float w = 2.3f;
    float fractionalPart = w - (int)w;
    Console.WriteLine(Math.Round(fractionalPart, 1));
    
  • 输出时格式化字符串
    若只是需要在输出时展示为0.3,无需修改实际数值,可以直接格式化输出内容:

    float w = 2.3f;
    Console.WriteLine("{0:F1}", w - (int)w);
    

内容的提问来源于stack exchange,提问作者Sarper Makas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 16:09:15