如何解决在不转换为字符串的情况下获取整数中的数字计数
是否可以计算整数中的数字?例如:232354 是 6 位数字,456 是 3 位数字。
我通常会在 C# 中做类似的事情:
var count = myInteger.ToString().Length;
但是因为我想在 HLSL(Unity 着色器)中使用它,所以使用字符串是不可能的(或?)。任何提示将不胜感激。
解决方法
您可以使用以下内容:
int count = (int)Math.floor(Math.log10(myInteger) + 1);
PS:它不适用于负数。
另一种通用但细长的解决方案:
int count = 0;
while (yourInteger != 0) {
yourInteger = yourInteger / 10;
++count;
}
return count;
,
获取以 10 为底的整数位数的一种方法是使用对数。 Log10 将为您提供 10 的幂的底数(例如,10 的次数可以乘以并且仍然低于此数字),因此您要加 1 以获得位置数。 Log 可以返回小数余数,因此您希望先将其取整以获取适当的整数值。
var count = Mathf.FloorToInt(Mathf.Log10(myInteger)) + 1;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。