可以双倍不小于1,所以.027412133不能存储为双倍?

时间:2014-10-12 15:11:52

标签: c# math

所以我在代码中有两个简单的数学行。我试图找出一个镜头的距离。我将镜头的角度转换为弧度,而弧度则转换为距离。我的弧度公式应该是弧度=度* PI / 180.0这似乎是正确的,距离公式应该是距离=速度^ 2 * sin(2 *弧度)/ 32.2距离公式我在多行上分解试图渲染这个问题,似乎当我将它乘以2后我的弧度变为2时,它会将弧度值设置为1而不是.027412133。

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

namespace ConsoleApplication1
{
class Program
{
    static void Main(string[] args)
    {
        double radians = 0.0;
        double degrees = 45.0;
        double velocity = 250.0;
        double distance = 0.0;

        radians = (degrees * Math.PI) / 180.0;
        velocity = Math.Pow(velocity, velocity);
        radians = 2 * radians;
        radians = Math.Sin(radians);
        Console.WriteLine(radians);
        distance = velocity * radians / 32.2;
        Console.WriteLine(distance);
    }
}
}

2 个答案:

答案 0 :(得分:3)

SteveO'Connor指出,1 正确答案:

double radians = 0.0d;
double degrees = 45.0d;

radians = degrees * Math.PI / 180.0d;
radians = 2.00d * radians;
Console.WriteLine(radians * 180 / Math.PI); 

//returns 90, so sin(radians) == sin(90) which = 1

BTW: Double的范围为:±5.0×10e-324到±1.7×10e308

答案 1 :(得分:1)

http://en.wikipedia.org/wiki/Double-precision_floating-point_format

  

双精度二进制浮点指数使用编码   偏移二进制表示,零偏移为1023;也   在IEEE 754标准中称为指数偏差。这样的例子   陈述将是:

     

Emin(1)= -1022

     

E(50)= - 973

     

Emax(2046)= 1023

双精度浮点数对分数和指数使用固定的位数,两者都可以表示负数。