質問編集履歴

3

修正

2021/04/25 15:36

投稿

daiki002
daiki002

スコア68

test CHANGED
File without changes
test CHANGED
@@ -90,7 +90,11 @@
90
90
 
91
91
 
92
92
 
93
- ### 試したこと1(memcpyを使用)
93
+ ### 試したこと
94
+
95
+ - キャスト時に値が切り捨てられないようにmemcpyを使用する形にしてみましたがダメでした。
96
+
97
+
94
98
 
95
99
  ```c++
96
100
 

2

試したことを追記

2021/04/25 15:36

投稿

daiki002
daiki002

スコア68

test CHANGED
File without changes
test CHANGED
@@ -90,6 +90,42 @@
90
90
 
91
91
 
92
92
 
93
+ ### 試したこと1(memcpyを使用)
94
+
95
+ ```c++
96
+
97
+ #include <Windows.h>
98
+
99
+ #include <iostream>
100
+
101
+
102
+
103
+ int main() {
104
+
105
+ M128A xmm0{ 0 };
106
+
107
+ float value = 0.1f;
108
+
109
+
110
+
111
+ memcpy(&xmm0.Low, &value, sizeof(value));
112
+
113
+ std::cout << std::fixed << static_cast<float>(xmm0.Low) << std::endl;
114
+
115
+ // 期待する出力: 0.100000
116
+
117
+ // 実際に得られる出力: 1036831936.000000
118
+
119
+
120
+
121
+ return 0;
122
+
123
+ }
124
+
125
+ ```
126
+
127
+
128
+
93
129
  ### 補足情報(FW/ツールのバージョンなど)
94
130
 
95
131
  - Windows 10 64bit Pro

1

修正

2021/04/25 15:35

投稿

daiki002
daiki002

スコア68

test CHANGED
File without changes
test CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
 
8
8
 
9
- XMMレジスタのLOWはULONGLONG, HIGHはLONGLONGで定義されている為float値をそのまま入れてもキャスト時に切り捨てられてしまうようです。
9
+ XMMレジスタM128A型のLOWはULONGLONG, HIGHはLONGLONGで定義されている為float値をそのまま入れてもキャスト時に切り捨てられてしまうようです。
10
10
 
11
11
  どうすれば期待する値を得ることが出来ますか?
12
12