我在Unity中模拟数字显示,我需要知道将浮动分解为一系列单独的整数。
例如
如果我的浮动是32.548
我需要五个单独的投注3,2,5,4,8。我还需要一个额外的整数变量,即小数点后面的位数。在这种情况下3.
将5个整数放入数组中是有用的,如myIntegerArray [0] = 3 myIntegerArray [1] = 2 等等。但这并不重要,重要的部分是将浮动划分为单个整数的代码。 有了这些,我就可以用它来控制在一系列不同的物体上显示哪些材料。
答案 0 :(得分:1)
var asString = 32.548.ToString();
var decimalPartLength = asString.Split('.').Last().Length;
var digitArray = asString.Where(char.IsDigit).Select(char.GetNumericValue).ToArray();
答案 1 :(得分:0)
一种解决方案可能是将浮点值转换为字符串,删除点,然后逐个字符地处理它。
一旦删除了点和负号(如果有的话),字符串的长度也会给你数字位数。
示例:
float value = 32.548;
string temp = value.ToString("0.00000");
temp = temp.Replace(".", "").Replace("-", "");
int numDigits = temp.Length;
int myIntegerArray[numDigits];
for (int i = 0; i < numDigits; i++)
{
myIntegerArray[i] = Int32.Parse(temp[i]);
}
答案 2 :(得分:0)
using System;
using System.Linq;
public class Program
{
public static void Main()
{
var sValue = Convert.ToString(32.548);
var normalized = sValue.Where(s => char.IsDigit(s));
var charArray = sValue.ToArray();
var numArray = normalized.Select(num => char.GetNumericValue(num)).ToList();
numArray.ForEach(num => Console.WriteLine(num));
}
}
答案 3 :(得分:0)
一种方法是将浮点数转换为字符串,然后处理字符:
Double d = 32.548;
String s = Convert.ToString(d);
IEnumerable<Int32> ints =
s
.Where(c => Char.IsDigit(c))
.Select(c => Convert.ToInt32(c.ToString()));
Int32 indexOfDecimal = s.IndexOf('.');
Int32 decimalPlaces = (indexOfDecimal == -1) ? 0 : (s.Length - indexOfDecimal) - 1;