分享
三行代码  ›  专栏  ›  技术社区  ›  David Ndckr

获取整数中的数字计数而不转换为字符串

  •  1
  • David Ndckr  · 技术社区  · 6 天前

    有可能计算整数中的数字吗?例:2354是6位数,456是3位数。

    我通常会在C语言中这样做:

    var count =  myInteger.ToString().Length;
    

    但是当我想在HLSL(Unity shader)中使用它时,使用字符串是不可能的(或者?)。任何暗示都将不胜感激。

    2 回复  |  直到 6 天前
        1
  •  3
  •   Karan    6 天前

    您可以使用以下选项:

    int count=(int)Math.floor(Math.log10(myInteger)+1);

    另一种通用但冗长的解决方案:

      int count = 0;
        while (yourInteger != 0) {
            yourInteger = yourInteger / 10;
            ++count;
        }
      return count;
    
        2
  •  1
  •   Mars Buttfield-Addison    6 天前

    var count = Mathf.FloorToInt(Mathf.Log10(myInteger)) + 1;