日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C語言實現將double/float?轉為字符串(帶自定義精度)_C 語言

作者:snow_lyGirl ? 更新時間: 2021-12-09 編程語言

將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位。

原文鏈接:https://blog.csdn.net/qq_31028313/article/details/86520864

欄目分類
最近更新