2010-04-14 62 views
1

我最近有一個關於coledatetime java實現的questionChris說,問題可能在於類型轉換:cpp-float vs java-float(或者可能是cpp-date vs java-date。不是類型,但..)。現在我對此有幾個問題:Java vs C++類型

  • 是否有比較表與java與c + +類型?
  • 如果類型轉換這個問題,在我的情況下(我有一個用OLEDate記錄的db,已經用一些C++程序創建了,我需要讀取和寫入該db,以便保持OLEDate字段的兼容性:my java代碼讀取正確的日期,並且C++程序不會受到java程序寫入db的影響。),你會怎麼做:
    • 使用COleDateTime以JNI檢索日期?
    • 不惜一切代價創建自己的實現(使用更廣泛的類型或其他任何東西)?
  • 有什麼,我在這裏失蹤?
+0

我同意大衛 - 這將是很高興知道什麼不是從koders代碼工作。這似乎不太可能是浮動類型的差異。 – 2010-04-14 08:57:52

+0

它有時會破壞C++代碼。我無法訪問該代碼,因此我不知道,那裏會發生什麼。 – folone 2010-04-14 09:03:49

回答

1

在C++類型範圍中,由於不存在標準的C++類型大小,所以不存在標準的Java-C++類型比較。

但是在大多數當前體系結構中,C++雙打是標準IEEE 754雙打,就像在Java中一樣。所以雖然代碼不能嚴格地移植到一些罕見的架構中,但它在任何x86/x86_64體系結構中都會運行得更多。

您之前回答的評論中有一個問題,您沒有解決:在您的實施中不起作用的是什麼?

+0

所以..這是否意味着,COleDateTime是依賴於C++的平臺?我的意思是,如果我比較float,那是從x86上的COleDateTime和我在x86_64上得到的那個返回的,即使兩個COleDateTime對象的構造日期完全相同,它們也應該是不同的? – folone 2010-04-14 09:35:33

+1

x86和x86_64中的float和double是相同的類型。根據您正在執行的具體操作以及運行它的處理器,由於舍入問題(您不應該使用與浮點數據的直接相等比較,但這是一個不同的問題),結果可能會稍有不同,但是與類似的處理器(例如運行32位或64位操作系統的相同處理器)的結果應該是一致的。 – 2010-04-14 10:00:41