救命,printf输出长双精度类型错误! 50

发布于 教育 2024-06-28
5个回答
  1. 匿名用户2024-01-30

    您选择了错误的修饰符,小写 l'这是一个长整数''或无符号长整数''修饰符,double'修饰符是大写的 l',所以你只需将 %lf'更改为 %lf'就是这样。 请注意,默认输出精度仍为小数点后 6 位,如果想要更高的精度,请使用 %15lf'。

    我需要一点时间来弄清楚精度问题,因为看起来精度在15以上,后面的输出数字不对。

    我以这种准确性查找了这个问题,它与架构有关。 但是,大多数实现现在也遵循 IEEE 754 浮点表示标准,长双精度是扩展精度表示,80 位在内部用于表示长双精度浮点数。 但是,尾数只有 64 位数字(即小数点后的数字),转换为十进制数字时约为 18 位。

    在你的例子中,你在初始值后面有一个l。'您可以获得 18 位精度,无论它有多高。 一般来说,浮点数的内部表示比较复杂,一时还不清楚,所以在使用浮点数的时候只需要小心就行了。

    aka day9981

  2. 匿名用户2024-01-29

    从第一行中删除长整型。

    楼上有几个人说。

  3. 匿名用户2024-01-28

    精度并不能保证小数点后那么多,似乎这个问题只能达到小数点后15位。

    此外,printf 句子改为:

    printf("%", f);

  4. 匿名用户2024-01-27

    我想我从来没有见过长双型,LF的意思是双型!!

  5. 匿名用户2024-01-26

    以 %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 表示输出为长整数。

相关回答
14个回答2024-06-28

define 是一个预处理命令,printf 是标准库中的一个函数。 >>>More

10个回答2024-06-28

总结。 C语言的输出可以通过运行**并查看终端显示的结果来分析,也可以使用gdb等调试工具进行分析。 >>>More

9个回答2024-06-28

他先计算逗号前的表达式,但是逗号前的表达式得到3的结果,然后计算逗号后面的表达式得到9,就是逗号前面的那个整体。等价于 ((a=3*a),3*a)....好吧,因为你去掉了那个括号......他相当于 a=(3*a, 3*a)....前面的等式没有改变 a 的值,所以 a 的值仍然是 1,乘以 3 是 3....

7个回答2024-06-28

首先,对于一般字符(字母、数字、符号),直接加到printf的双引号中,而对于一些特殊字符,如换行符、引号、斜杠、反斜杠、制表符等,这些在输出时非常麻烦,于是我想到了一个方法,叫做【转义字符】,就像他的名字一样,意思是转义。 >>>More

11个回答2024-06-28

没有 4t13 无需打钉子。

精神有点高涨。 >>>More