c0d*_*3rs -2 perl rounding labels gd-graph
我有一个包含几个元素的数组:
MSN = 34.3433423432434%
Chrome = 12.4343434353534%
Gtalk = 32.23233543543532%...
我将这个数组作为y轴标签传递给一个名为GD :: Graph的模块.我现在面临的问题是,图表上的数字是如此之大,以至于它们与相邻条目重叠并使其无法读取.
有没有办法可以将数组中的所有元素四舍五入到小数点后两位?并使它xx.xx%?
此外,任何熟悉使用GD :: Graph的人,您知道如何增加图表上的文字大小吗?我可以很好地增加标题/图例大小,但是'Gtalk'或'32 .23233543543532%'中的实际文本非常小,我已经尝试了很多来自http://search.cpan.org/dist/GDGraph的命令/Graph.pm,但它们似乎对我不起作用!
bri*_*foy 10
从perlfaq4的回答到Perl有一个round()函数吗?那么ceil()和floor()怎么样?Trig功能? :
请记住,int()只是截断为0.对于舍入到一定数量的数字,sprintf()或printf()通常是最简单的路径.
printf("%.3f", 3.1415926535); # prints 3.142
Run Code Online (Sandbox Code Playgroud)
POSIX模块(标准Perl发行版的一部分)实现了ceil(),floor()以及许多其他数学和三角函数.
use POSIX;
$ceil = ceil(3.5); # 4
$floor = floor(3.5); # 3
Run Code Online (Sandbox Code Playgroud)
在5.000到5.003 perls中,三角测量在Math :: Complex模块中完成.使用5.004,Math :: Trig模块(标准Perl发行版的一部分)实现了三角函数.在内部,它使用Math :: Complex模块,一些函数可以从实轴突破到复平面,例如2的反正弦.
财务应用程序中的舍入可能会产生严重影响,应精确指定所使用的舍入方法.在这些情况下,可能不会相信Perl正在使用的系统舍入,而是实现您自己需要的舍入功能.
要了解原因,请注意您在中途点轮换中仍然存在问题:
for ($i = 0; $i < 1.01; $i += 0.05) { printf "%.1f ",$i}
0.0 0.1 0.1 0.2 0.2 0.2 0.3 0.3 0.4 0.4 0.5 0.5 0.6 0.7 0.7
0.8 0.8 0.9 0.9 1.0 1.0
Run Code Online (Sandbox Code Playgroud)
不要怪Perl.它与C中的相同.IEEE表示我们必须这样做.绝对值为2**31(在32位机器上)的整数的Perl数将与数学整数非常相似.其他数字不保证.