c# - 如何在 C# 中处理超过 double.Max 的双数?
问题描述
我正在使用一种返回较大 double
值 ( > 1e308
) 的方法,然后将该值乘以一个较小 double
的值以获得合理的数字。我的问题是如何处理C#中超过 ( ) 的double
值而不获得 Infinity 输出?1.79E308
解决方案
尝试使用对数( Log(1e308) == 709.196...
):而不是
double bigNumber = SomeMethod(); // double.PositiveInfinity
double smallNumber = SomeOtherMethod();
double result = bigNumber * smallNumber; // double.PositiveInfinity
实施
double bigNumber = SomeMethodLog(); // reasonable value
double smallNumber = SomeOtherMethodLog();
// bigNumber will be cancelled out with smallNumber
double result = Math.Exp(bigNumber + smallNumber); // reasonable value
推荐阅读
- c++ - 在flex中匹配C风格多行注释的最佳解决方案?
- javascript - 根据整个对象的值从对象数组中删除一个对象
- python - 无法使用 spoonacular api 完成 POST 请求(添加到膳食计划)
- python - 比较 Pandas 中的“关键答案”和“答案”DataFrame
- java - 如何使用java将时间戳中的毫秒转换为时间戳中的微秒
- ios - 在 Swift 中创建一个基于超时的函数
- admob - Xcode12 beta 5 出现“找不到 -lGoogleUtilities 的库”错误
- javascript - 为什么我的 Feed2JS RSS 提要在本地工作,但在部署后不能工作?(GitHub页面)
- python - 如何使用python正则表达式检索字符串数据块
- r - 在r中以几何格式转换表格格式