小编Sri*_*san的帖子

从双精度格式说明符'%g'开始以指数格式打印时

我想了解%gdouble的格式说明符何时开始以指数格式打印值.

myTest.c

#include <stdio.h>

int main() {

  double val = 384615.38462;
  double val2 = 9999999;
  printf ("val = %g\n",val);
  printf ("val2 = %g\n",val2);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

使用gcc编译:

gcc version 4.5.2 (GCC)
Target: i386-pc-solaris2.11
Run Code Online (Sandbox Code Playgroud)

输出:

val = 384615
val2 = 1e+07
Run Code Online (Sandbox Code Playgroud)

问题:为什么val打印为整数,为什么val2即使我没有使用%lf过也会转换为指数格式printf.

是否有从使用指数格式开始打印值的范围?如果是的话,我们有什么办法可以猜出价值区间是什么?

提前致谢.

c printf

4
推荐指数
1
解决办法
215
查看次数

漂浮在perl的德国语言环境中不是昏迷的

我在德国语言环境中安装了一台linux机器.当我在perl中打印float/double时,我希望它以昏迷分开打印而不是点分开.但它没有发生.任何的想法 ?

    [root@IDCDVAM886 ~]# uname -a
    Linux IDCDVAM886 3.10.0-327.el7.x86_64 #1 SMP Thu Oct 29 17:29:29 EDT 2015 x86_64 x86_64 x86_64 GNU/Linux
    [root@IDCDVAM886 ~]# cat /etc/redhat-release 
    Red Hat Enterprise Linux Server release 7.2 (Maipo)
    [root@IDCDVAM886 ~]# locale
    LANG=de_DE.UTF-8
    LC_CTYPE="de_DE.UTF-8"
    LC_NUMERIC="de_DE.UTF-8"
    LC_TIME="de_DE.UTF-8"
    LC_COLLATE="de_DE.UTF-8"
    LC_MONETARY="de_DE.UTF-8"
    LC_MESSAGES="de_DE.UTF-8"
    LC_PAPER="de_DE.UTF-8"
    LC_NAME="de_DE.UTF-8"
    LC_ADDRESS="de_DE.UTF-8"
    LC_TELEPHONE="de_DE.UTF-8"
    LC_MEASUREMENT="de_DE.UTF-8"
    LC_IDENTIFICATION="de_DE.UTF-8"
    LC_ALL=de_DE.UTF-8
    [root@IDCDVAM886 ~]# echo $LC_ALL
    de_DE.UTF-8
    [root@IDCDVAM886 ~]# echo $LC_NUMERIC
    de_DE.UTF-8

    [root@IDCDVAM886 ~]# cat my.pl 
    #!/usr/bin/perl

    use locale;

    print "LC_NUMERIC = $ENV{LC_NUMERIC}\n";
    print 5/2 ;
    print "\n";
    my $val = 2,5; …
Run Code Online (Sandbox Code Playgroud)

linux perl locale setlocale

2
推荐指数
1
解决办法
243
查看次数

标签 统计

c ×1

linux ×1

locale ×1

perl ×1

printf ×1

setlocale ×1