gpt4 book ai didi

windows - ActiveState Perl 5.14 无法比较某些值?

转载 作者:可可西里 更新时间:2023-11-01 11:13:53 26 4
gpt4 key购买 nike

基本上,在文件流上使用以下代码,我得到以下内容:

$basis = $2 * 1.0;
$cost = ($basis - 2500.0) ** 1.05;
# The above should ensure that both cost & basis are floats
printf " %f -> %f", $basis, $cost;
if ($basis gt $cost) { # <- *** THIS WAS MY ERROR: gt forces lexical!
$cost = $basis;
printf " -> %f", $cost;
}

输出:

  10667.000000 -> 12813.438340
30667.000000 -> 47014.045519
26667.000000 -> 40029.842300
66667.000000 -> 111603.373367 -> 66667.000000
8000.000000 -> 8460.203780
10667.000000 -> 12813.438340
73333.000000 -> 123807.632158 -> 73333.000000
6667.000000 -> 6321.420427 -> 6667.000000
80000.000000 -> 136071.379474 -> 80000.000000

如您所见,对于大多数值,代码似乎工作正常。

但对于某些值....66667、80000 和其他一些值,ActivePerl 5.14 告诉我 66667 > 1111603!!!

有没有人对此有所了解 - 或者有我可能会使用的备用 Perl 解释器 (Windows)。因为这太荒谬了。

最佳答案

你使用的是词法比较而不是数字比较

$cost = ($basis - 2500.0) ** 1.05;
printf " %f -> %f", $basis, $cost;
if ($basis > $cost) {
$cost = $basis;
printf " -> %f", $cost;
}

ps:修改以匹配更新的问题

关于windows - ActiveState Perl 5.14 无法比较某些值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9425669/

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