C# 将指数数转换为整数
将C# 将指数数转换为整数,c#,.net,c#-4.0,C#,.net,C# 4.0,将“2.3456754342345466E+36”转换为完整数字: var sm = Convert.ToDouble(splitted[0]) + Convert.ToDouble(splitted[1]); **//sm value is === "2.3456754342345466E+36"** var d = Decimal.Parse(sm.ToString(), System.Globalization.NumberStyles.Float); if (splitted[
“2.3456754342345466E+36”
转换为完整数字:
var sm = Convert.ToDouble(splitted[0]) + Convert.ToDouble(splitted[1]);
**//sm value is === "2.3456754342345466E+36"**
var d = Decimal.Parse(sm.ToString(),
System.Globalization.NumberStyles.Float);
if (splitted[0].Length ==Convert.ToString(d).Length)
{
sum.Add(""+sm);
}
else
{
sum.Add(""+splitted[0]);
}
Decimal.Parse(sm.ToString()
正在抛出:
值对于小数来说太大或太小
有人能帮忙吗。这是因为
十进制
的最大值约为7.9e+28
,因此它无法容纳您的数字。您需要将其存储在双精度
中。当您要打印put数字时,您可以使用ToString()以任何方式格式化它
带有格式说明符的方法。例如,F0
将给出一个不带小数的直数:
var sm = "2.3456754342345466E+36";
var d = double.Parse(sm, System.Globalization.NumberStyles.Float);
Console.WriteLine(d.ToString("F0")); //Prints 2345675434234550000000000000000000000
它工作得很好,但最后我得到了满满的零,但我需要精确的结果,因为我在做求和运算。你是什么意思?这是一个精确的结果。这些零是数字的一部分,有
+36
位。如果你不想要结尾的零,你只想要234567543423455
,那么这是一个完全不同的结果这个数字是2.34567543423455e+14
。如果你把这个数字2.34567543423455e+14
和我的答案中的代码一起使用,你就没有零了。如果你想从+36
开始删除零,那么你可以像这样简单地修剪它们d.ToString(“F0”).TrimEnd.ToString(“0”)
.d.ToString(“F0”).TrimEnd('0').TrimEnd('0'))帮我解决了问题,谢谢。