C#中的浮点溢出

时间:2017-03-22 14:17:08

标签: c# windows

如果我尝试在浮点数中填充大于async function fetchOAuth2() { var redirectURL = browser.identity.getRedirectURL() + "page.html"; console.log(redirectURL); var clientID = "CLIENT ID"; var authURL = "https://trakt.tv/oauth/authorize"; // API I'm using authURL += `?response_type=code`; authURL += `&client_id=${clientID}`; authURL += `&redirect_uri=${redirectURL}`; console.log(authURL); var authResult = await browser.identity.launchWebAuthFlow({ interactive: true, url: authURL }); // do something with authResult } 的数字会怎样?

我的代码中有这个:

float.MaxValue

我有两个问题:

  1. (a * x)的结果是否存储在大于浮点数的温度?这是仅在结果通过int a; float x; float y; ... float b = (a * x) / y;
  2. 时完成的
  3. 如果将总和的结果填入float.MaxValue,我是否会收到异常?如果没有,我应该如何处理这个以防止灾难?

3 个答案:

答案 0 :(得分:2)

您将获得NaN(或float.PositiveInfinity)...或者您只是留在float.NegativeInfinityfloat.MaxValue)...浮点数有“分辨率“,浮点数越大越低......最后两个浮点之间的距离约为......

  

3,40282347E + 38:float.MaxValue

     

3,40282326E + 38:之前的浮动

     

2,028241E + 31:差异< --------- 2 * 2 ^ 31!

通过

计算
float.MaxValue + 1 == float.MaxValue

答案 1 :(得分:1)

如果你试图在float中放入一个大于float.MaxValue的数字,它将是“Infinity”

答案 2 :(得分:1)

  1. 是的,计算确实是在计算机的内存中完成的。情况总是这样。
  2. 不,溢出不会导致异常。
  3. 如果您运行此代码段(清理错误后)会发生什么:

    float b = (a * x) / y;
    Console.WriteLine(b);
    
    Output: +infinity
    
    a = (int)b;
    Console.WriteLine(a);
    
    Output: -2147483648