首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >0到1之间的数字类型

0到1之间的数字类型
EN

Stack Overflow用户
提问于 2015-11-20 17:39:04
回答 2查看 126关注 0票数 0

有没有一种自然的方法来定义一个介于0和1之间的数字类型?基本上,我们可以用double来做任何事情,问题是我应该在一些函数中定义一些边界检查,并且我有一个(可能很愚蠢的)想法,将边界检查外包给一个类,比如

代码语言:javascript
运行
复制
class Probability {

    // the value of the Probability
    double val;

    Probability(double val):value(val){
    // freak out if val > 1 or val < 0
    //...
    //
    };

    // operators such as
    Probability operator + (Probability const & a, Probability const & b){
        double result a.val + b.val;
        if ((result > 1) || (result < 0)){
            // freak out
            result = 0
        }
        return result;
    }
    // ...
    //
}

这种方法的问题可能是它会减慢每个操作的速度。有没有更快的边界检查方法?我还想知道如何处理上面代码中的“离谱”部分。

EN

Stack Overflow用户

发布于 2015-11-20 18:12:39

“变态”选项很简单:throw std::invalid_argument。抛出有一点慢并不重要;你无论如何都得不到答案。优点是不抛出很快,因为优化器可以假设非异常路径的可能性要大得多。

在性能方面,最好是有一个IntermediateResult类,这样只对返回给Probability的最终赋值进行范围检查。这就绕过了0.75+0.5-0.6示例。

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33823356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档