双精度和其他浮点数精度

时间:2015-07-04 13:48:27

标签: c++ precision

我无法让我的程序为双打输出正确的精度。说我有一个

class Program
{
    static void Main(string[] args)
    {
        using (MPI.Environment environment = new MPI.Environment(ref args))
        {
            Intracommunicator comm = Communicator.world;

            if (comm.Rank == 0)
            {
                int [] numbers = new int[comm.Size];

                for (int k = 0; k < numbers.Length; k++)
                    numbers[k] = k * k;

                int r = comm.Scatter(numbers);

                Console.WriteLine("Received {0} at {1}", r, comm.Rank);
            }
            else
            {
                int r = comm.Scatter<int>(0);
                Console.WriteLine("Received {0} at {1}", r, comm.Rank);
            }
        }
    }
}

运行一些算法后,我得到double d; 作为输出。我希望将d变量的精度设置为小数点后的4个精度点。我应该能够这样做:

d

问题在于,如果我cout << setprecision(4) << d; 是整数,则不会打印小数。

例如,如果d,则我的程序将打印d == 120。我想让它打印120。如何让我的程序始终打印4位小数?

1 个答案:

答案 0 :(得分:3)

您需要使用固定精度输出固定数量的小数点。您应该告诉stdout流(cout)您要使用固定精度。

std::cout << std::fixed << std::setprecision(4) << d;