天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 106|回复: 1

objectarx 保留小数后面指定的位数

[复制链接]
  • TA的每日心情
    开心
    2024-8-31 15:58
  • 签到天数: 89 天

    [LV.6]常住居民II

    488

    主题

    207

    回帖

    3366

    积分

    管理员

    积分
    3366
    发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
    该函数实现保留小数后面指定位数的小数:

    调用方式为:

    Round(0.499,2)=0.50 Round(0.4949,2)=0.49

    double Round(double _x, int decimalnum)
    {
    //参数:数、保留小数位数
    //说明:该函数只关心保留小数位数的后一位,与sprintf函数相同
    //     例: round(0.499,2)=0.50  round(0.4949,2)=0.49
    double num,dec,factor;
    dec  = modf(_x,&num);//分切整数与小数部分(不直接用long型数参与计算,
             //       避免运算溢出)
    factor= pow(10.0f,decimalnum);//因子
    dec *=factor;//小数点右移decimalnum位
    dec  +=_x>=0 ? 0.5:-0.5;//四舍五入运算
    modf(dec,&dec);//取整
    dec/=factor;//小数点左移decimalnum位
    return num + dec;//合并返回值
    }

     

     

     

     

    objectarx 保留小数后面指定的位数
    中国膜结构网打造全中国最好的膜结构综合平台 ,统一协调膜结构设计,膜结构施工,膜材采购,膜材定制,膜结构预算全方位服务。 中国空间膜结构协会合作单位。
  • TA的每日心情
    开心
    4 天前
  • 签到天数: 138 天

    [LV.7]常住居民III

    850

    主题

    625

    回帖

    4765

    积分

    管理员

    积分
    4765
    QQ
    发表于 2024-6-23 20:19:48 | 显示全部楼层
    1. 在ObjectARX(Autodesk AutoCAD的扩展开发工具包)中,如果你需要保留小数点后指定的位数,你可以使用C++的标准库函数来实现这一需求。具体来说,`std::fixed` 和 `std::setprecision` 函数可以用来控制输出流的格式,以便保留指定的小数位数。下面是一个简单的示例,展示如何在ObjectARX环境中保留小数点后两位:
    2. ```cpp
    3. #include <iostream>
    4. #include <iomanip> // 引入iomanip库以使用std::setprecision和std::fixed
    5. void PrintFixedDecimal(double value, int decimalPlaces) {
    6.     std::cout << std::fixed << std::setprecision(decimalPlaces) << value << std::endl;
    7. }
    8. void InitializeARX() {
    9.     // 示例数值
    10.     double myValue = 3.1415926535;
    11.     // 打印保留两位小数的数值
    12.     PrintFixedDecimal(myValue, 2);
    13. }
    14. // 必须有的导出函数,用于AutoCAD加载此ARX程序
    15. AcRx::AppRetCode AcRxEntryPoint(AcRx::AppMsgCode msg, void* pkt) {
    16.     if (msg == AcRx::kInitAppMsg) {
    17.         acrxDynamicLinker->registerApp(InitializeARX);
    18.     }
    19.     else if (msg == AcRx::kUnloadAppMsg) {
    20.     }
    21.     return AcRx::kRetOK;
    22. }
    23. // 入口点
    24. extern "C" AcRx::AppRetCode acrxEntryPoint(AcRx::AppMsgCode msg, void* pkt) {
    25.     return AcRxEntryPoint(msg, pkt);
    26. }
    27. ```
    28. 在上述代码中,`PrintFixedDecimal` 函数接受一个double类型的数值和一个整数参数,用于指定要保留的小数位数。使用`std::fixed`确保小数点后至少有一位数字,并通过`std::setprecision`设定小数点后的位数。这个示例展示了如何打印一个保留两位小数的数值,但你可以根据需要调整`decimalPlaces`参数来保留任意位数的小数。
    29. 请注意,上述代码示例是为了演示如何在ObjectARX中使用C++标准库进行格式化输出,并非直接与AutoCAD图形对象操作相关,但可以在ObjectARX的任何逻辑处理中调用以处理数值的显示格式。
    复制代码
    objectarx 保留小数后面指定的位数
    深圳市诺科空间膜结构有限公司 专业膜结构设计施工20年,一级设计一级施工  www.nkmjg.cn 欢迎联系电话:138-2526-2292
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池| |网站地图

    GMT+8, 2024-9-8 09:09 , Processed in 0.069872 second(s), 28 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表