-
您选择了错误的修饰符,小写 l'这是一个长整数''或无符号长整数''修饰符,double'修饰符是大写的 l',所以你只需将 %lf'更改为 %lf'就是这样。 请注意,默认输出精度仍为小数点后 6 位,如果想要更高的精度,请使用 %15lf'。
我需要一点时间来弄清楚精度问题,因为看起来精度在15以上,后面的输出数字不对。
我以这种准确性查找了这个问题,它与架构有关。 但是,大多数实现现在也遵循 IEEE 754 浮点表示标准,长双精度是扩展精度表示,80 位在内部用于表示长双精度浮点数。 但是,尾数只有 64 位数字(即小数点后的数字),转换为十进制数字时约为 18 位。
在你的例子中,你在初始值后面有一个l。'您可以获得 18 位精度,无论它有多高。 一般来说,浮点数的内部表示比较复杂,一时还不清楚,所以在使用浮点数的时候只需要小心就行了。
aka day9981
-
从第一行中删除长整型。
楼上有几个人说。
-
精度并不能保证小数点后那么多,似乎这个问题只能达到小数点后15位。
此外,printf 句子改为:
printf("%", f);
-
我想我从来没有见过长双型,LF的意思是双型!!
-
以 %lu 格式输出。
每个项目的含义描述如下:
1)类型:类型字符用于表示输出数据的类型,其格式和含义如下表所示
设置字符含义的格式。
d 以十进制形式输出有符号整数(正数不输出符号)。
o 以八进制形式输出无符号整数(不带前缀 0)。
x,x 以十六进制形式输出无符号整数(不带前缀 0x)。
u 以十进制形式输出无符号整数。
f 将单精度和双精度实数输出为小数。
e,e 以指数方式输出单精度和双精度实数。
g,g 以 %f 或 %e 的较短输出宽度输出单精度和双精度实数。
c 输出单个字符。
的输出字符串。
2)标志:有四种类型的标志字符:-、+和空格,它们的含义如下表所示
象征意义。
结果是左对齐,右对齐,空白。
输出符号(正或负)。
空间 当输出值为正时,空间前面有一个空格,当输出值为负时,空间前面有一个负号。
它对 C、S、D、U 类没有影响; 对于 O 类,在输出处添加前缀 o; 对于 x 类,在输出端添加前缀 0x; 对于类 e、g、f,仅当结果具有小数位时才给出小数点。
3)输出最小宽度:输出的最小位数表示为十进制整数。如果实际位数大于定义的宽度,则输出基于实际位数,如果实际位数小于定义的宽度,则添加空格或 0。
4)精度:精度格式化程序以”“以十进制整数开头。
本项含义为:如果输出数字,则表示小数位数; 如果输出是字符,则指示输出字符数。 如果实际位数大于定义的精度数,则多余的位数将被截断。
5.长度:长度锻造为 H 和 L,其中 h 表示输出为短整数,L 表示输出为长整数。
他先计算逗号前的表达式,但是逗号前的表达式得到3的结果,然后计算逗号后面的表达式得到9,就是逗号前面的那个整体。等价于 ((a=3*a),3*a)....好吧,因为你去掉了那个括号......他相当于 a=(3*a, 3*a)....前面的等式没有改变 a 的值,所以 a 的值仍然是 1,乘以 3 是 3....
首先,对于一般字符(字母、数字、符号),直接加到printf的双引号中,而对于一些特殊字符,如换行符、引号、斜杠、反斜杠、制表符等,这些在输出时非常麻烦,于是我想到了一个方法,叫做【转义字符】,就像他的名字一样,意思是转义。 >>>More