我有以下代码投入double到int:
double dblValue = 7.30;
int intValue = (int)(dblValue*100); //I want intValue to store extactly 730;
cout << intValue;
Run Code Online (Sandbox Code Playgroud)
输出: 729
I know that the compiler is reading dblValue as 7.2999999 before casting it to int.
Run Code Online (Sandbox Code Playgroud)
我的问题是:是否可以通过防止舍入错误将其强制转换为730?
如果您的解决方案避免使用C++ 11或其他预定义函数,那将是最好的.我在这里使用的唯一预处理器指令是<iostream>.
我在Perl中有一个程序可以处理偶尔会非常小的概率.由于舍入误差,有时其中一个概率为零.我想检查以下内容:
use constant TINY_FLOAT => 1e-200;
my $prob = calculate_prob();
if ( $prob == 0 ) {
$prob = TINY_FLOAT;
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,但我实际上看到Perl生成的数字小于1e-200(我刚看到8.14e-314飞过).对于我的应用程序,我可以更改calculate_prob(),以便它返回TINY_FLOAT的最大值和实际概率,但这让我对如何在Perl中处理浮点数感到好奇.
Perl中最小的正浮点值是多少?它是平台依赖的吗?如果有,是否有一个快速程序,我可以用来在我的机器上找出它?