C# float/double 减 float/double 等 (X.xxxxxxxxxxxxxE-07)(黑盒测试)

问题

因为没有深究原理,所有只进行了"黑盒测试"

黑盒测试结论:

|----------------|----------------------|------------------------------------------------------------------------------|
| 问题 | 操作 | 结论 |
| float/double运算 | 进过一系列的运算后 | 大概率 != 0.0 , 而是等于0.00000000000xxxx |
| | 等于X.xxxxxxxx一串数字的时候 | 不影响下一步继续使用 |
| | 当需要显示float/double的时候 | 进行一次 "保留N位运算" Mach.Round(float, n) String.Format("{0:F2}", 1.0f); // 结果 1.00 |

代码

cs 复制代码
 void ChangeFormat()
    {
        double aaa = 2.2f;
        double bbb = 2.0f;
        double ccc = aaa - bbb;

        // double ddd = ccc - 0.2d;
        // double ddd = 2.2f - 2.0f - 0.2d; // 这个与上方的结果一样
        double ddd = 2.2d - 2.0d - 0.2; // 这个与上方的结果一样
        string str1 = String.Format("{0:F2}", ddd);

        Debug.Log(ddd);                 // 结果 1.66533453693773E-16
        Debug.Log(ddd + 0.001d);        // 结果 0.00100000000000017
        Debug.Log(Math.Round(ddd, 2));  // 结果 0
        Debug.Log((int)ddd);            // 结果 0
        Debug.Log(str1);                // 结果 0.00


        // 测试:4.76837158092103E-07 是否大于 0
        if (ddd > 0)
        {
            Debug.Log("得到: 1.66533453693773E-16  > 0");
        }


        // ddd + 0.001f 为什么 +0.001
        // 因为:经过测试得 1.66533453693773E-16 == 0
        // 所以:+0.001, 还原显示数值 (一般只要小数两位)
    }

输出结果

相关推荐
IT规划师15 分钟前
C#|.net core 基础 - 扩展数组添加删除性能最好的方法
c#·.netcore·数组
时光追逐者1 小时前
分享6个.NET开源的AI和LLM相关项目框架
人工智能·microsoft·ai·c#·.net·.netcore
friklogff1 小时前
【C#生态园】提升C#开发效率:深入了解自然语言处理库与工具
开发语言·c#·区块链
__water10 小时前
『功能项目』回调函数处理死亡【54】
c#·回调函数·unity引擎
__water10 小时前
『功能项目』眩晕图标显示【52】
c#·unity引擎·动画事件
__water11 小时前
『功能项目』第二职业法师的平A【57】
c#·unity引擎·魔法球伤害传递
__water13 小时前
『功能项目』战士的伤害型技能【45】
c#·unity引擎·战士职业伤害型技能
君莫愁。14 小时前
【Unity】检测鼠标点击位置是否有2D对象
unity·c#·游戏引擎
Lingbug15 小时前
.Net日志组件之NLog的使用和配置
后端·c#·.net·.netcore
咩咩觉主15 小时前
Unity实战案例全解析:PVZ 植物卡片状态分析
unity·c#·游戏引擎