我可以使用sngl
將雙精度實變量轉換爲單精度。但是,我怎樣才能將一個雙精度復變量轉換爲單精度變量?Fortran:將雙精度複數轉換爲單精度
0
A
回答
-2
您可以複製的單精度複雜的變量,或 您還可以使用cmplx
和dcmplx
功能:
program test
complex*16:: a
complex :: b
a = (1.d0, 2.d0)
b = a
print *, a, b
print *, cmplx(a), dcmplx(b)
end
輸出:
(1.00000000000000,2.00000000000000) (1.000000,2.000000)
(1.000000,2.000000) (1.00000000000000,2.00000000000000)
6
使用通用REAL()
所有實際數字轉換,儘管SNGL()
也可用於一個特定情況:
integer, parameter :: sp = kind(1e0), dp = kind(1d0)
real(x) !converts to the default kind, which is the single precision
!sngl(x) does the same thing
real(x, sp) ! converts to the kind sp (single precision)
real(x, dp) ! converts to the kind dp (double precision)
複雜的是一樣的,但使用CMPLX()
:
cmplx(x) !converts to the default kind, which is the single precision
cmplx(x, sp) ! converts to the kind sp (single precision)
cmplx(x, dp) ! converts to the kind dp (double precision)
在分配的轉換是隱式的,你不必(但可以)使用這些顯式轉換函數。
單精度和雙精度的整體概念已經過時並被Fortran 90 kinds所取代。
+0
我更喜歡'use iso_fortran_env'和'整數,參數:: sp = real32,dp = real64' – steabert 2014-11-14 14:29:37
+2
我也是,但是這會改變語義有點我試圖保持它作爲默認和雙。 – 2014-11-14 14:42:40
相關問題
- 1. 從雙精度轉換爲單精度
- 2. 無法將雙精度轉換爲雙精度
- 3. 將雙精度轉換爲整數
- 4. 將雙精度轉換爲浮點數
- 5. 單精度和雙精度
- 6. 如何將雙精度JavaScript數組轉換爲雙精度數組。
- 7. 將字符串轉換爲雙精度 - 丟失精度
- 8. Objective C - 如何將雙精度轉換爲長精度
- 9. 在Fortran中將邏輯類型轉換爲雙精度
- 10. 將字符串轉換爲雙精度,
- 11. DirectShow - 將IGraphBuilder *轉換爲雙精度(C++)
- 12. 如何將char *轉換爲雙精度?
- 13. C#,將Npoi.ICell轉換爲雙精度型
- 14. 將bstr_t轉換爲雙精度
- 15. 如何將DBNULL轉換爲雙精度?
- 16. 將時間轉換爲雙精度
- 17. 將字符串轉換爲雙精度
- 18. 將雙精度轉換爲QString
- 19. 將字符串轉換爲雙精度?
- 20. 將文本轉換爲雙精度
- 21. C#將日期轉換爲雙精度
- 22. 雙精度和單精度浮點數?
- 23. Fortran - 雙精度問題
- 24. 從java BigDecimal轉換爲雙精度丟失精度爲
- 25. 將單元格數組轉換爲雙精度單元陣列
- 26. 將IEEE-754雙精度和單精度轉換爲十進制Java bug
- 27. 將經度和緯度值(度)轉換爲雙精度。 Java
- 28. Java如何將包含多個雙精度的byte []轉換爲雙精度[]
- 29. 雙精度浮點數如何轉換爲單精度浮點格式?
- 30. 如何轉換黑莓中的雙精度雙精度?
我不得不說,現在我更喜歡Valdimir的解決方案,而且我應該注意複雜的* 16不是標準的Fortran - 同樣的機制解決了現代Fortran中的這種問題 – 2014-11-14 15:05:04