我如何在计算中避免-0.0
How can i avoid -0.0 in computation
本文关键字:计算 更新时间:2023-10-16
两个双值。
double a=-324.000000
double b= 0.000000
if(a*b<0)
{
//number is less than 0
}
else
{
//number is greater than zero
}
它总是以"小于零的数字"的形式输出。当我将两者相乘时,得到的结果为"-0.000000"。但是,结果应该是0.000000。
这不是我得到的结果。你确定问题不在别的地方吗?
你在评论中说"我试过if(a==0.0){/*but it never enters here!!*/ }
。"看起来这个数字实际上并不是0。
考虑以下代码:
#include<iostream>
int main() {
double a=-324;
double b= 0;
double c = a * b;
std::cout<<std::boolalpha
<<"a : "<<a<<std::endl
<<"b : "<<b<<std::endl
<<"c : "<<c<<std::endl
<<"c < 0 : "<<(c < 0)<<std::endl
<<"c > 0 : "<<(c > 0)<<std::endl
<<"c == 0: "<<(c == 0)<<std::endl
;
}
带输出:
a : -324
b : 0
c : -0
c < 0 : false
c > 0 : false
c == 0: true
根据IEEE浮点运算标准(也称为IEEE 754):
比较应忽略零符号(因此+0=-0)
(引用第5.11节)
你的问题在其他地方。
是的,可以生成值-0.0。它的比较值等于正0.0,因此您可以执行以下操作:
double c = a * b;
if (c == 0.0)
c = 0.0;
实际上,我已经在VisualStudio中使用了这段代码来修复一个格式错误。一定要彻底地评论,这样人们就不会认为你疯了。
相关文章:
- 为什么"do while"循环不断退出,即使条件计算结果为 false?
- 递归函数计算序列中的平方和(并输出过程)
- (C++)分析树以计算返回错误值的简单算术表达式
- 我的字符计数代码计算错误.为什么
- 在计算中使用二的幂有多有利可图
- 如何计算文件中的"columns"数?
- 计算排序向量的向量中唯一值的计数
- 如何使用 std::累积在 C++ 中计算总和立方体
- 使用Qt C++计算类似Git的SHA1哈希
- OpenCV C++.快速计算混淆矩阵
- cpp二进制搜索问题,计算给定数组中输入元素的出现次数
- C++如何计算用户输入的数字中的偶数位数
- 如何计算数据类型的范围,例如int
- 类似枚举的计算常量
- 计算每个节点的树高,帮助我解释这个代码解决方案
- 多个If语句与使用逻辑运算符计算条件的单个语句的比较
- 计算缩放多边形的比例,得到给定的多边形面积
- 在C++中如何在没有pow的情况下进行基础计算
- 计算平均值,不包括上次得分
- 如何计算多映射中重复对的数量