如何将大数转换为短加Exp?
How to convert from big number to short plus Exp?
可能是我今天没睡够,今天想的不够清楚:
我有大数,我有一组 Exp“大数名”。我想得到大数的指数,然后将大数显示为十进制值+大数标签。
string[] exponent =
{
"Mil",
"Bil",
"Tri",
"Qua",
"Qui",
"Sex",
"Sep",
"Oct",
"Non",
};
double value = 1230000000;
if(value > 1000000)
{
int pow = (int)(value / 1000000);
res = value.ToString("#.##") + exponent[pow] ;
}
我想要的预期输出是:
12.3亿
但我显然没有正确转换值。
使用以 10 为底的对数将使您得到最接近该数字的 10 的幂,但您需要四舍五入到最接近的 3 的 10 次方的倍数(您确实需要以 1000 为底的对数)。
然后你需要将 value
除以 1000 的幂得到匹配的尾数:
string res;
if(value >= 1e6) {
int pow = ((int)Math.Log10(value))/3;
res = (value/Math.Pow(10, 3*pow)).Dump().ToString("#.##") + exponent[pow-2] ;
}
else
res = value.ToString();
可能是我今天没睡够,今天想的不够清楚:
我有大数,我有一组 Exp“大数名”。我想得到大数的指数,然后将大数显示为十进制值+大数标签。
string[] exponent =
{
"Mil",
"Bil",
"Tri",
"Qua",
"Qui",
"Sex",
"Sep",
"Oct",
"Non",
};
double value = 1230000000;
if(value > 1000000)
{
int pow = (int)(value / 1000000);
res = value.ToString("#.##") + exponent[pow] ;
}
我想要的预期输出是:
12.3亿
但我显然没有正确转换值。
使用以 10 为底的对数将使您得到最接近该数字的 10 的幂,但您需要四舍五入到最接近的 3 的 10 次方的倍数(您确实需要以 1000 为底的对数)。
然后你需要将 value
除以 1000 的幂得到匹配的尾数:
string res;
if(value >= 1e6) {
int pow = ((int)Math.Log10(value))/3;
res = (value/Math.Pow(10, 3*pow)).Dump().ToString("#.##") + exponent[pow-2] ;
}
else
res = value.ToString();