在我们的 C++ 代码中,我们有以下内容:
arraySize = regionsvertices.size();
double* arr = new double[arraySize];
int k = 0;
for (double i : regionsvertices) {
arr[k++] = i;
}
return arr;
相关的C#代码如下所示:
var regionsPtr = region_growing_algorithm(
pointsArr,
simpleShape.points.Length / 3,
simpleShape.faces,
simpleShape.faces.Length / 3,
filename);
var arrayLength = get_array_size();
var regions = new double[arrayLength];
Marshal.Copy(regionsPtr, regions, 0, arrayLength);
return new JsonResult
{
Data = regions
};
在 TypeScript 中我们这样做:
$.ajax({
type: "POST",
url: "/ShapeDetection/RegionGrowing",
data: {
points: points,
faces: faces
},
success: function (result) {
console.log("result from RegionGrowing", result.Data);
},
dataType: "json"
});
问题是我们得到的 result.Data 数值是整数,而不是双精度值。不知何故,数字无法正确转换。
你能告诉我们我们做错了什么吗?
var data = JSON.parse(result.Data); // Parse the JSON to ensure types
通过使用 JSON.parse,您可以将接收到的 JSON 数据显式转换为 JavaScript 对象,这应该保持双精度。这可以帮助确保数字在客户端被视为双精度数,无论它们在服务器端如何序列化。