C语言实现将double/float 转为字符串(带自定义精度)

 更新时间:2021年12月10日 15:06:28   作者:snow_lyGirl  
这篇文章主要介绍了C语言实现将double/float 转为字符串(带自定义精度),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

将double/float转为字符串(带自定义精度)

char *double_to_string(double d, int decimal)
{ 
        decimal = decimal < 0 ? 0 : decimal;
        char *p;
        char dd[20];
        switch (decimal) {
        case 0:
                sprintf(dd, "%.0lf", d);
                break;
        case 1:
                sprintf(dd, "%.1lf", d);
                break;
        case 2:
                sprintf(dd, "%.2lf", d);
                break;
        case 3:
                sprintf(dd, "%.3lf", d);
                break;
        case 4:
                sprintf(dd, "%.4lf", d);
                break;
        case 5:
                sprintf(dd, "%.5lf", d);
                break;
        default:
                sprintf(dd, "%.6lf", d);
                break; 
        }
        p = malloc(strlen(dd));
        strcpy(p,dd);
        return p;
}

需用到头文件有

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

简单用法

double d = 3.1415926;
char dstr[20];
sprintf(dstr,"%.2lf",d);//将d 保留2位小数赋值给dstr

float和double精度问题

double和float的区别

是double精度高,有效数字16位,float精度7位。但double消耗内存是float的两倍,double的运算速度比float慢得多,C语言中数学函数名称double 和 float不同,不要写错,能用单精度时不要用双精度(以省内存,加快运算速度)。

float和double的精度

是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,由于它是不变的,故不能对精度造成影响。

  • float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字;
  • double:2^52 = 4503599627370496,一共16位,同理,double的精度为15~16位。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • C语言深入详解四大内存函数的使用

    C语言深入详解四大内存函数的使用

    这篇文章主要介绍了C语言的四大内存函数,讲解了mencpy、memmove、memcmp、memset函数,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-07-07
  • 详解C语言中的预处理命令

    详解C语言中的预处理命令

    初学C语言的时候,我们会在开头写下一句话,#include<stdio.h>,这就是预处理命令,下面我们通过这篇文章来了解一下,感兴趣的可以跟随小编一起学习一下
    2022-12-12
  • C语言编程C++动态内存分配示例讲解

    C语言编程C++动态内存分配示例讲解

    这篇文章主要介绍了C语言编程C++动态内存分配示例讲解,为什么存在动态内存分配?本文通过动态内存介绍及常见内存错误等示例来为大家讲解
    2021-09-09
  • C语言通过深度优先搜索来解电梯问题和N皇后问题的示例

    C语言通过深度优先搜索来解电梯问题和N皇后问题的示例

    深度优先搜索即是对一个新发现的节点上如果还关联未探测到的边,就沿此边探测下去,直到发现从原点可达的所有点为止,这里我们就来展示C语言通过深度优先搜索来解电梯问题和N皇后问题的示例
    2016-06-06
  • C++中的循环引用

    C++中的循环引用

    虽然C++11引入了智能指针的,但是开发人员在与内存的斗争问题上并没有解放,如果我门实用不当仍然有内存泄漏问题,其中智能指针的循环引用缺陷是最大的问题。下面通过实例代码给大家介绍c++中的循环引用,一起看看吧
    2017-09-09
  • C 转移表/转换表的深入分析

    C 转移表/转换表的深入分析

    本篇文章是对c语言中转移表/转换表进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • c++显式栈实现递归介绍

    c++显式栈实现递归介绍

    大家好,本篇文章主要讲的是c++显式栈实现递归介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-01-01
  • C++中的运算符和表达式

    C++中的运算符和表达式

    这篇文章主要介绍了C++中的运算符和表达式,学习使用表达式,对数据类型进行处理.详细介绍内容需要的小伙伴可以参考下面文章相关内容
    2022-03-03
  • C语言字符串大小比较

    C语言字符串大小比较

    本文给大家分享给大家的是C语言的字符串大小比较的函数,有需要的小伙伴可以参考下。
    2015-07-07
  • C++中COM组件初始化方法实例分析

    C++中COM组件初始化方法实例分析

    这篇文章主要介绍了C++中COM组件初始化方法,涉及C++中COM组件的使用技巧,需要的朋友可以参考下
    2015-05-05

最新评论