转换数

时间:2018-03-06 21:19:58

标签: c#

我正在开发一个基本的空闲游戏(基于cookie点击器),并且有一个脚本可以使用代码将这些较大的数字转换为较小的数字:

if(valueToConvert >= 1000000000000000000000) {
        converted = (valueToConvert/1000000000000000000000).ToString("f3") + "Sex";

然而,'积分常数'太大了,我很想知道如何通过这个。

如果您不理解代码,则会检查用户货币是否大于sextillion,如果是,请将数字1000000000000000000000设置为1 Sextillion。

2 个答案:

答案 0 :(得分:2)

你正在写一个整数常量,但它比最大的原始整数类型可以容纳大约100倍。 (1E + 21,与ulong.MaxValue相比,约为1.8E + 19。)

但那没问题 - 你在评论中提到你的价值实际上是浮动的。因此,使用浮点常量(1000000000000000000000f1e+21f)而不是整数常量(1000000000000000000000)。

或者,如果您真的使用double(通常比浮动更好),请使用1000000000000000000000.01e+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];
    }