双变量的精度

时间:2015-02-15 17:12:39

标签: c# double

我试图将一个单位转换为另一个单位。但是当我输入一个值时,代码会将值指定为double但仍然输出整数。我想要一个5位精度,如数字12.53527作为输出。以下代码有什么问题?:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Program1
{
    class Program
    {
        static void Main(string[] args)
        {

            Console.Write("Fahrenheit = ");//
            string x_str = Console.ReadLine();


            double celsius = (Convert.ToDouble(x_str) - 32) * (9 / 5);
            Console.Write("Celcius = " + celsius + "\n");

            Console.Write("Enter to terminate");
            Console.ReadLine();

        }
    }
}

编辑:家伙我会重复这个问题请拿一个计算器并将100分为68,即100/68。结果计算器显示1.4705882352941176470588235294118。在你的建议中我得到1.40000或1.4。我想要有5位精度,如:1.47058。有可能在c sharp ??

3 个答案:

答案 0 :(得分:2)

9 / 5被视为值是两个整数。这意味着结果是1(在向下舍入1.8之后)。您可以改为使用1.8

答案 1 :(得分:2)

9 / 5是整数表达式,结果1是。你可以将1转换为double,但是1作为double仍然是1。

您需要使用以下任一项将表达式更改为浮点数:

9.0 / 5.0

或者

(double)9 / (double)5

答案 2 :(得分:0)

你的转换乘数是错误的,并且你想确保它使用Double值而不是整数:

double celsius = (Convert.ToDouble(x_str) - 32.0) * (5.0 / 9.0);

要将数字强制为具有一定小数位数的字符串,您可以使用.ToString(),如下所示:

Console.Write("Celcius = " + celsius.ToString("0.00000") + "\n");

有关格式字符串的更多信息:Custom Numeric Format Strings

P.S。将温度提高到小数点后五位是不太现实的。