【发布时间】: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
【问题讨论】:
有没有更简单的方法来比较金属着色语言中的两个浮点数?
我目前乘以 1000,然后转换为 int 以获得整数比较。
int r = (int)(color.r * 1000);
int checkColorR = (int)(50.0/255.0 * 1000);
if (r == checkColorR) ...
我在 Unity 中追求类似:Mathf.Approximately
【问题讨论】:
一种常用技术是将绝对差值与某个所需精度进行比较:
if (fabs(color.r - 50.0/255.0) < 1.0/1000.0) ...
当然,您可以为此定义一个函数,而不是到处重复。
您当前的技术很糟糕,因为它会截断整数。这两个值可能非常接近,但在整数的任一侧,它们会比较为不相等,因为其中一个会被截断为下面的整数。例如,4.9999 和 5.0001。
【讨论】: