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

为什么Unity中Mathf.Sign(0)返回1而非C#文档规定的0?

Unity中Mathf.Sign(0)返回1的原因

Unity的Mathf.Sign是引擎独立实现的工具方法,和C#原生的System.Math.Sign实现逻辑不同,不属于运行bug。

两者的规则差异如下:

  • C#官方定义的System.Math.Sign逻辑:参数为正数返回1,负数返回-1,参数为0时返回0,和你查到的官方文档描述一致。
  • Unity官方定义的Mathf.Sign逻辑:参数大于等于0时返回1,参数小于0时返回-1,因此传入0时返回1是预期行为。

你给出的测试结果完全符合Unity的设计逻辑:

Mathf.Sign(0.3); // 1
Mathf.Sign(-0.3); // -1
Mathf.Sign(0); // 1

如果你的业务逻辑需要0返回0的判断逻辑,可以选择两种方案实现:

  • 直接调用C#原生的System.Math.Sign方法
  • 自行封装判断逻辑,示例如下:
public static int CustomSign(float value)
{
    if (value > 0) return 1;
    if (value < 0) return -1;
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 19:54:03