【问题标题】:Initialize decimal with literal [duplicate]用文字初始化十进制[重复]
【发布时间】:2018-04-30 02:30:15
【问题描述】:

我有一个实现十进制浮点运算的 Decimal 类。它可以使用整数算术类型或存储为字符串的小数位数进行初始化。有意避免内置浮点类型,因为它们具有近似性。这种方法效果很好,但编码为字符串的小数位数看起来很尴尬。是否可以在幕后使用某种 C++ 文字来构建字符串(或二进制表示)?

Decimal a{"1.254684987"}; // current initialization
Decimal b{1.254684987_dec}; // desired way

【问题讨论】:

    标签: c++ decimal


    【解决方案1】:

    鉴于您已经有一个 c'tor 采用 C 字符串,只需编写类似的东西

    Decimal operator "" _dec(const char* c){
        return Decimal{c}; // Assuming an explicit c'tor
    }
    
    auto whatever = 12.3_dec;
    

    当然,你需要一个 C++11 编译器才能工作。

    【讨论】:

    • 那在 C++11 上不行吗?
    • @DanielH 是的,已修复
    • 这个语法叫什么名字?
    • @ibug in standardese, 原始文字操作符
    • 哦...你想象一个想象的语法对你有用,然后你发现它毕竟不是想象的。要是能有更多这样的时刻就好了……
    猜你喜欢
    • 2013-07-22
    • 1970-01-01
    • 1970-01-01
    • 2013-11-11
    • 1970-01-01
    • 2014-11-13
    • 2016-02-01
    • 2012-03-03
    相关资源
    最近更新 更多