调用ToString()不精确的浮点数会产生人们期望的数字(例如4.999999 ...被打印为5)。但是,当强制转换为int时,小数部分会丢失,结果是一个整数减1。
float num = 5f;
num *= 0.01f;
num *= 100f;
num.ToString().Dump(); // produces "5", as expected
((int)num).ToString().Dump(); // produces "4"
如何将浮点数转换为int,以便获得对人类有益的价值,从而float.ToString()产生这种价值?
我正在使用这个肮脏的技巧:
int ToInt(float value) {
return (int)(value + Math.Sign(value) * 0.00001);
}
..但肯定必须有一个更优雅的解决方案。
素胚勾勒不出你
慕少森
慕沐林林
相关分类