c# - 显示时大双打变成负数的问题
问题描述
我正在尝试在联合国中制作答题器游戏。目前我正在使用双打作为显示大数字的一种方式。但是,当我得到任何超过一万亿的数字时,它会变为 -1354 万亿或类似的数字。下面显示的代码是将大数字填写为“___ 百万”或“____ 亿”的代码,但一旦超过 9990 亿,则显示“-1354 万亿”。它继续表现得像一万亿美元,因为你可以用明显的负值购买物品,但显示都是错误的。
我尝试将 double 更改为 int、long 和 float,所有这些都会导致相同的问题。我也尝试过更大的数字,但它们甚至在系统中都不起作用。似乎 9990 亿是在它彻底松动之前的极限。
public static string largeWholeNumbers(double number)
{
int numOfZeros = (number.ToString()).Length; //Gets Length of number
int zeroSets = (int)Mathf.Floor(numOfZeros / 3.001f); //Divides it by a little over 3 and floors it
double numDisplay = number/(power(10, ((2 *zeroSets) + (zeroSets - 1)))); //Get the thing infront of the illion (IE 134, 6 million)
//Defines
string numberName = "";
int hugeNumberSet = 0;
int hugeNumberStart = 0;
int hugeNumberStartIndex = 0;
int hugeNumberEnd = 0;
if (zeroSets < 11)
{
zeroSets -= 2;
numberName = numberEndings.wholeNumEndings[zeroSets];
}
if (zeroSets > 10)
{
hugeNumberSet = (int)Mathf.Floor((zeroSets - 1)/10); //Divides it by 10 to get 10, 20, 30 etc
hugeNumberEnd = hugeNumberSet - 1;
hugeNumberStart = zeroSets - (hugeNumberSet * 10); //Example zeroSet = 12, this = 2
hugeNumberStartIndex = hugeNumberStart - 1;
if (hugeNumberStart < 1)
{
numberName = numberEndings.endNumEndings[hugeNumberEnd];
}
if (hugeNumberStart >= 1)
{
numberName = numberEndings.endNumEndings[hugeNumberEnd] + numberEndings.beginNumEndings[hugeNumberStartIndex];
}
}
return numDisplay.ToString() + " " + numberName;
}
预期的结果是将界面中的数字显示为“1 万亿”,但它显示为“-1354 万亿”。
解决方案
推荐阅读
- javascript - 我的 javascript 库无法处理所有文档元素(调用 js 库问题之前和之后)
- amcharts4 - 如何显示线系列圆形项目符号与Amcharts 4相交的所有工具提示文本?
- r - 尝试在 R 中应用创建的函数
- java - 主题:Android Firebase 中的查询——数据检索
- c# - C# 如何知道如何正确修改命名空间以使其工作?
- c++ - R 4.0.3 内联编译在基于 math.h 的 macos 11.0 上失败
- android - Android 构建不起作用(在模块中发现重复的类 com.google.android.gms.internal.measurement.zzbt)
- entity-framework-core - 使用 Entity Framework Core 将成员添加到虚拟集合
- sql - 为redshift中的同一行元素创建具有不同组名的自定义列
- prepared-statement - H2 where 子句中的多个 case 语句