【问题标题】:Comparison of floats in the Metal Shading LanguageMetal Shading Language 中的浮点数比较
【发布时间】:2018-06-30 18:28:35
【问题描述】:

有没有更简单的方法来比较金属着色语言中的两个浮点数?

我目前乘以 1000,然后转换为 int 以获得整数比较。

int r = (int)(color.r * 1000);
int checkColorR = (int)(50.0/255.0 * 1000);
if (r == checkColorR) ...

我在 Unity 中追求类似:Mathf.Approximately

【问题讨论】:

    标签: ios shader metal


    【解决方案1】:

    一种常用技术是将绝对差值与某个所需精度进行比较:

    if (fabs(color.r - 50.0/255.0) < 1.0/1000.0) ...
    

    当然,您可以为此定义一个函数,而不是到处重复。

    您当前的技术很糟糕,因为它会截断整数。这两个值可能非常接近,但在整数的任一侧,它们会比较为不相等,因为其中一个会被截断为下面的整数。例如,4.9999 和 5.0001。

    【讨论】:

      猜你喜欢
      • 2020-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-15
      • 2011-10-23
      • 1970-01-01
      相关资源
      最近更新 更多