我從VB6調用C++函數。 其中我需要傳遞貨幣數據類型的變量。但是在C++中我們沒有這樣的數據類型。 我應該在C++函數中使用什麼來使貨幣數據類型兼容?VB 6的貨幣數據類型到C++
1
A
回答
2
我想最好的選擇是將它作爲VARIANT傳遞並手動處理C++代碼中的VARIANT。
0
只需將currency
類型乘以100,然後將其作爲long
整數傳遞給C++。當你需要結果時,做相反的事。
不會有精度損失,代碼也很簡單。
1
的VB6s 貨幣類型是大致相同從C++(假設一個Microsoft編譯器)
內部,它是一個8字節整數其通過的因子縮放的CY
類型10,000,在小數點分隔符後給你4位數字。
根據編譯器可以直接使用CY
類型或傳遞VARIANT
並使用myVariant.cyVal
(這是CY
類型)。
如果您沒有VARIANT
和CY
類型可用(它們不是C++標準的一部分),那麼您的C++函數必須接受64位整數,並且必須將該值除以10,000以得到正確的值值。 (要麼使用__int64
或long long
,再次取決於編譯器)
2
相信的Visual C++有一個本機64位整數型__int64(也稱爲CY),其大致相當於VB6貨幣?雖然在你的C++代碼中,你會「看到」這個值比你在VB6中「看到」的值大10,000倍。在C++中除以10,000以獲得正確的值,或者使用縮放值來保持精度。
對於其他C++編譯器布魯斯·麥金尼的聖經性交的Visual Basicrecommends這樣的事情,所以做MSDN:
typedef union _LARGE_INTEGER {
struct {
DWORD LowPart;
LONG HighPart;
};
LONGLONG QuadPart; // In Visual C++, a typedef to __int64
} LARGE_INTEGER;
詳情請參閱here。
相關問題
- 1. Access中貨幣值的數據類型
- 2. 貨幣類型列到char
- 3. SQL Server貨幣數據類型問題
- 4. 查詢貨幣/ BigDecimal數據類型
- 5. ASP .NET:SQL Server貨幣類型和.NET貨幣類型
- 6. Jsoup得到錯誤的貨幣類型
- 7. c#中哪種數據類型更適合貨幣計算?
- 8. 什麼數據類型應該用於貨幣計算類型
- 9. 我應該使用哪種XML數據類型作爲貨幣/貨幣?
- 10. 什麼是貨幣類型?
- 11. 將PostgreSql貨幣數據類型映射到ORMLite
- 12. 如何從貨幣類型屬性中檢索值和貨幣類型
- 13. C#格式十進制貨幣/貨幣
- 14. C#從數據庫格式化貨幣
- 15. T-Sql從貨幣數據類型中刪除小數點
- 16. MVC數據類型貨幣觸發器數字小鍵盤
- 17. 核心數據 - 貨幣的十進制類型
- 18. PHP:用於貨幣值的MySql數據類型
- 19. 用於操縱貨幣的數據類型
- 20. Access 2003和SQL Server後端 - 貨幣的數據類型?
- 21. 用於存儲貨幣值的VB.NET最佳數據類型
- 22. 金融應用程序中必需的貨幣數據類型?
- 23. 什麼是MySQL中貨幣的最佳數據類型?
- 24. 根據貨幣代碼將貨幣格式設置爲貨幣
- 25. 定義JSON模式的貨幣類型
- 26. 我使用哪種Swift數據類型用於貨幣
- 27. 在實體框架貨幣數據類型
- 28. PHP mssql_bind傳遞貨幣數據類型失敗
- 29. 數據庫:貨幣按CountryCode?
- 30. 獲取貨幣數據
儘管如果答案超出了long的可能範圍,您將會發生溢出。 – MarkJ 2009-08-12 08:53:50
正確,如果金額超過$ 20,000美元:)如果金額很大,那麼'__int64'會更合適。 – lavinio 2009-08-12 15:34:35