在C++中将双精度浮点数转换为定点数

7

我有一个C++中的双精度变量,想将其输出为固定小数位数的数字。

基本上,我想知道如何编写一个函数,该函数接受一个双精度数和一个小数位数,并将该数字输出为指定的小数位数,必要时进行零填充。

例如:

convert(1.235, 2)

会打印出
1.24

并且

 convert(1, 3)

会打印出

1.000

因此,该函数的工作方式为

convert(number as double, number of decimal places)

有没有人知道如何做到这一点?

只需将所需值打印到标准输出(cout)即可。

提前致谢。


http://www.cplusplus.com/reference/iostream/manipulators/setprecision/ - Anycorn
4个回答

6
假设我记得我的格式字符串正确,
printf("%.*f", (int)precision, (double)number);

4

0

不存在所谓的“固定小数位”数字。转换函数需要是实际打印它的函数。我建议先获取数字的整数部分,然后打印它。如果[小数位数]>0,则打印一个小数点,然后逐个打印每个小数,例如:floor((n*log(10,d))%10); <-- 只是一个想法,不是实际代码。


-1
#include <iomanip>
#include <iostream.h>

// print a float, x places of precision 
void convert (double number, int x)
{
    cout << setprecision(x) << number << endl;
}

int main()
{
    double a = 1.234;
    convert (a,2);
} 

输出:1.23

参考


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接