小编Mah*_*esh的帖子

Visual Studio 2010的精度问题

我有一个用Microsoft Visual C++ 6.0编写的应用程序.现在我使用C#在Visual Studio 2010中重写了应用程序,但由于精度问题,结果不匹配.其中一个精确问题是以下问题.

float a = 1.0f;

float b = 3.0f;

float c = a / b;
Run Code Online (Sandbox Code Playgroud)

在Visual Studio 2010中运行时,这是C#代码,给出cvalue =0.333333343

但是相同的代码,在值定义中的值之后删除f,当在Visual C++ 6.0上运行时给出c值= 0.333333.

任何人都可以解决它并解释在Visual Studio和Visual C++ 6.0中获得相同c值的方法吗?


实际上,这些值来自观察窗口.我开始知道不同版本的visual studio在浮点格式表示方面可能有所不同.因此,手表中的值可能没用.这就是我在两个visual studio版本中打印值的原因,结果如下.使用visual c ++语言的visual studio 6.0,它是0.333333(六个3)

但是使用C#语言的visual studio 10它是0.3333333(七个3)

那么有人可以帮助我使我的C#程序产生与visual C++相同的结果吗?(即如何使浮动操作在两个版本上产生相同的结果???)

c# visual-c++-6 visual-studio-2010 floating-point-precision

4
推荐指数
2
解决办法
1094
查看次数

隐式向上转换是否发生在Visual C#中?

double b = 1.5 * a,哪里afloat变量.

a被强制转换为double上的Visual Studio 2010在Visual C#执行乘法之前?

c#

3
推荐指数
1
解决办法
213
查看次数

如何在Visual C++中将浮点文字处理为double或float?

假设浮点数float a = (1.5 * b)在哪里b,那么这个表达式是如何评估的?被1.5视为双或浮动?

c++

2
推荐指数
1
解决办法
330
查看次数

并行代码CPU利用率问题

open System
open System.Diagnostics
open System.Threading.Tasks
open System.Collections

let computation input =
  input|> Array.map (fun x-> sqrt(float x))|> ignore

let computation1 (input:int[]) =
  input|> Array.map (fun x-> Convert.ToString(x,2)) |> ignore


let abc p = 

        for i in 1..50000 do
            [|for i in 1..100000 -> i|]
            |> computation 

Parallel.For(0,100,fun x->abc 0) |>ignore
Run Code Online (Sandbox Code Playgroud)

嗨,在上面的程序中如果我在" abc() "中使用" computation() " 运行应用程序,我看到CPU利用率为70-80%.

但是在" abc () "中使用" calculate1() "的代码相同,我看到只有20%的CPU利用率,而且我看到很多(一半内核)内核空闲.

有没有人对这种行为有所了解?

我的CPU规格:Intel Xeon CPU @ 3.40Hz,启用超线程总核心:2个CPU,每个8核= 16个总核心,HT = 2*16 = 32

f# task-parallel-library

0
推荐指数
1
解决办法
75
查看次数