这是我想要做的事情:
ORDER BY t1.id, t2.id
结果变量是: 1.7970102999144311E + 57 double
试图:
double result = Math.Pow((1 + 8), 60) - 1;
返回相同: 1.7970102999144311E + 57 double 我想将其四舍五入为 1.79701 ,例如
任何解决方案?
答案 0 :(得分:1)
你遇到的问题是Math.Round将小数点右边的东西四舍五入。例如,如果您正在处理货币并且您执行的操作为$ 1.5234524,那么您将使用:
Math.Round(1.5234524,2);
// output 1.52
你正在处理的数字实际上是一个非常大的数字的科学记数法,小数点右边没有任何内容。这就是Math.Round的结果与输入相同的原因。
答案 1 :(得分:1)
你误解了你所看到的。
1.7970102999144311E+57
是
的科学记数法1797010299914431100000... (with 41 trailing zeros).
它是一个整数,因此将其舍入到5位小数将正确返回相同的值。
您要做的是格式化数字的输出
String.Format(CultureInfo.InvariantCulture, "{0:0.#####E+0}", result);
返回1.79701E+57
。请注意,这是与1.79701
答案 2 :(得分:0)
之前的评论和答案都是正确的。但要获得您想要实现的目标,您可以使用以下内容:
double result = Math.Pow((1 + 8), 60) - 1;
string s = String.Format("{0:E5}", result);
double d = Double.Parse(s);