使用double,你不可能输出提问中那个a的小数点后70位的准确数值。
double叫“双精度浮点数”,这里说精度,不是因为数值精确,而是因为“精度有限”,double的数字精度,是15~16位,超出部分无法精确表达,甚至差异很大。
double a=45236896*145236544+1/695325145785263527586932
整数部分已经超出精度范围了,小数部分几乎是没有意义的,别说小数点后70位了。
在16位精度以内,要显示double的数值表达而不是指数表达很简单,各种格式化函数都可以,主要在于使用指定的格式:
printf("%6.9lf",a);
用format函数