gpt4 book ai didi

chapel - float 的输出精度为 `writeln()`

转载 作者:行者123 更新时间:2023-12-04 17:14:43 25 4
gpt4 key购买 nike

使用 writef() ,我可以控制一个浮点数的输出精度,例如:

writef( "%20.15dr\n", 1.0 / 3.0 );      // 0.333333333333333

但如果我使用 writeln()为方便起见,输出6位数字:
writeln( 1.0 / 3.0 );                   // 0.333333

有没有办法控制 writeln() 的浮点数的默认输出精度? ..? (例如,通过一些环境变量?)

为了比较,有些语言默认输出 15 位数字和一些 6 位数字,因此结果似乎因语言(或编译器)而异。
# python2
print 1.0 / 3.0 # 0.333333333333
# python3
print( 1.0 / 3.0 ) # 0.3333333333333333
# julia
println( 1.0 / 3.0 ) # 0.3333333333333333
# gfortran
print *, 1.0d0 / 3.0d0 # 0.33333333333333331
# swift
print( 1.0 / 3.0 ) # 0.333333333333333
# nim
echo( 1.0 / 3.0 ) # 0.3333333333333333
# g++
cout << 1.0 / 3.0 << endl; # 0.333333
# d (dmd)
writeln( 1.0 / 3.0 ); # 0.333333

最佳答案

使用 iostyle_set_style() :

writeln(100.0/3.0);   // 33.3333

stdout.lock();
stdout._set_style(new iostyle(precision=10));
stdout.unlock();

writeln(100.0/3.0); // 33.33333333

您也可以将其他东西传递给 new iostyle() , 例如:
precision=10, realfmt=0          // like %.10g in C:  33.33333333      (default)
precision=10, realfmt=1 // like %.10f in C: 33.3333333333
precision=10, realfmt=2 // like %.10e in C: 3.3333333333e+01

关于chapel - float 的输出精度为 `writeln()`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54332050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com