zoukankan      html  css  js  c++  java
  • double转CString

    最近发生了一件有意思的事,MFC工程中有一个CEdit控件,控件绑定了一个double变量,当double变量的值变化时通过UpdateData可以直接展示到控件上。然后,有一个CListCtrl,需要将CEdit的值做展示。重点来了,当CEdit的值较小时,一切都很正常,当CEdit值比较大时或者精度很高时,两边的显示就不一致,CEdit显示的科学计数法且精度高,CListCtrl就差很多。

    经过分析,发现问题出在double转CString上,原因是CListCtrl在设置Item Text时,必须要CString类型,因此进行了转换,而转换时就涉及精度问题。现将double转CString的代码贴出来,供大家参考:

    /*************************************************
    Function:DoubleToString
    Description:double转CString
    Calls:
    Input:需要转换的double
    Output:NULL
    Return:CString
    Others:DBL_DIG(15)为精度(f or e format)
    参考资料:
    https://docs.microsoft.com/en-us/previous-versions/f30dzcf6(v=vs.140)
    https://docs.microsoft.com/en-us/previous-versions/56e442dc(v=vs.140)
    https://docs.microsoft.com/en-us/previous-versions/hf4y5e3w(v=vs.140)
    Data:2021年6月2日
    *************************************************/
    CString DoubleToString(double data)
    {
        const int TEXT_BUFFER_SIZE = 400;
        TCHAR szBuffer[TEXT_BUFFER_SIZE] = {0};
        _sntprintf_s(szBuffer, _countof(szBuffer), _countof(szBuffer) - 1, _T("%.*g"), DBL_DIG, data);
        return szBuffer;
    }
    

    需要注意的是DBL_DIG是在C运行时float.h里定义的,如果需要,请包含此头文件。

    作者:快雪
    本文版权归作者所有,欢迎转载,但必须给出原文链接,并保留此段声明,否则保留追究法律责任的权利。
  • 相关阅读:
    ASP.NET 动态创建文本框 TextBox (add TextBox to page dynamically)
    SQL Server 行列转换
    NPOI把Excel导入到数据库
    Net操作Excel(终极方法NPOI)
    mongdo通用类(C#版)
    ORACLE 定时执行存储过程
    C# Excel导入、导出
    网络爬虫+HtmlAgilityPack+windows服务从博客园爬取20万博文
    Git初级使用教程
    asp.net+swfupload 多图片批量上传(附源码下载)
  • 原文地址:https://www.cnblogs.com/kuaixue/p/14840900.html
Copyright © 2011-2022 走看看