[英]How to handle float values that are greater than the maximum value of double
我的值大於1.97626258336499E-323
我也不能使用BigInteger,因為它只能處理整數值
任何幫助表示贊賞
以下是失敗的代碼,但由於某些用戶提供的某些解決方案而失敗:
BigValue / (Math.Pow((1 + ret), j));
此處BigValue類似於15000.25
ret是-0.99197104212554987
j將達到500-600。
我也不知道如何為此使用Rational Class
Microsoft基類庫團隊的BigRational 。 它使用大整數將其存儲為小數,但支持各種運算符。
在將其打印為小數時,我認為您需要為此編寫自己的實現。 我在這堂課的某個地方寫了一個書,但是我必須找到它。
這可能是有用的。 我用了一段時間沒有問題。 這是一個.Net BigDecimal類,您可以從codeplex下載(或僅查看源代碼):
http://bigdecimal.codeplex.com/releases/view/44790
它是用VB.Net(.Net 4.0)編寫的,但這無關緊要。
在C#中使用它的示例: http : //www.dreamincode.net/forums/blog/217/entry-2522-the-madman-scribblings/
一種解決方案可能是在日志空間中解決您的問題。
您的示例將變為:
exp(log(Number) - log(1-0.9999999) * 400)
了解如何使用日志處理此類數字。 是的,您可以使用一個大的float包,但這幾乎總是過大。 通常,您可以使用日志獲得所需的信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.