我正在开发一个基本的空闲游戏(基于cookie点击器),并且有一个脚本可以使用代码将这些较大的数字转换为较小的数字:
if(valueToConvert >= 1000000000000000000000) {
converted = (valueToConvert/1000000000000000000000).ToString("f3") + "Sex";
然而,'积分常数'太大了,我很想知道如何通过这个。
如果您不理解代码,则会检查用户货币是否大于sextillion,如果是,请将数字1000000000000000000000设置为1 Sextillion。
答案 0 :(得分:2)
你正在写一个整数常量,但它比最大的原始整数类型可以容纳大约100倍。 (1E + 21,与ulong.MaxValue相比,约为1.8E + 19。)
但那没问题 - 你在评论中提到你的价值实际上是浮动的。因此,使用浮点常量(1000000000000000000000f
或1e+21f
)而不是整数常量(1000000000000000000000
)。
或者,如果您真的使用double(通常比浮动更好),请使用1000000000000000000000.0
或1e+21
。
答案 1 :(得分:0)
存储这么大的数字是没有意义的,因为对价值的解决方案当然如此。为什么不将数字扩展到十亿或万亿级别,这是您显示的最低数量。
这样的函数可以将缩放的整数转换为显示的值,而无需比较大常量。如果范围足够宽,64位整数就不够了,那么你可以使用double。无论哪种方式,您都不再需要评估大的常量值。
public string ConvertValue(Int64 Value)
{
string[] ValueNames = { "Billion", "Trillion" ... };
int index;
for (index = 0; index < ValueNames.GetLength(0); index++)
{
Int64 NewValue = Value / 1000;
if (NewValue == 0)
{
break;
}
else
{
Value = NewValue;
}
}
return Value.ToString() + ValueNames[index];
}