小编Tro*_*ald的帖子

.NET Core 3 在舍入接近 0 的负数时返回 -0 字符串

所以这种奇怪的行为是在我们正在实施的单元测试中被发现的。

在 .NET Core 3.x 中,如果将接近 0 的负数四舍五入然后转换为字符串,则该字符串将显示“-0”而不是 0。

Framework 和 .NET Core 2.x 不会表现出这种行为。

double d = -.1;
Console.WriteLine(Math.Round(d,0));
Run Code Online (Sandbox Code Playgroud)

.NET 核心小提琴

框架小提琴

这是 Core 中的一个新错误,还是一些奇怪的有意更改?

.net c# .net-core

5
推荐指数
1
解决办法
256
查看次数

Nuget图书馆的多运行时目标定位

我有一个目前使用.NET 4.0构建并部署到Nuget的库.该库没有很多依赖项,似乎在.NET Standard和Core项目中也能很好地工作.

手动添加到标准或核心项目时,库会引发兼容性错误.通过修改.csproj文件以删除不需要的引用来解决此问题.它现在看起来像这样.

<ItemGroup>
   <Reference Include="System" />
   <Reference Include="System.Core" />
   <Reference Include="Microsoft.CSharp" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)

这似乎解决方案似乎使核心和标准的库功能正确.当手动将库添加到Standard或Core项目时,兼容性警告现在已经消失,即使该库仍使用.NET 4.0构建.但是,在发布到Nuget,然后通过Nuget下载库后,我仍然收到此警告.

"警告****包'******'使用'.NETFramework,Version = v4.6.1'而不是项目目标框架'.NETCoreApp,Version = v2.0'恢复.此包可能不是与您的项目完全兼容."

在经历了很多烦恼和调查之后,我意识到该库似乎仍然适用于标准和核心项目,但我不确定它是否使用.NET 4.6.1来实际运行基于此警告的库.

所以我的问题是,如何正确地将程序包部署到Nuget以正确定位多个运行时?我是否需要在每个运行时中构建多个项目?如果是这样,我可以将其打包为一个包仍然,或者我是否需要为每个运行时使用不同的版本?不确定这里的最佳做法是什么.

.net c# nuget .net-core .net-standard

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

C#与Javascript的算术顺序

以下问题在C#和Javascript之间返回不同的结果:

JS结果= 0.6987590698013918

C#Result = 0.697932453616849

使用Javascript

mu =0.6962788561718957;
e1= 0.0016792203861749964;
phi1 = mu + e1 * (3 / 2 - 27 * e1 * e1 / 32) * Math.sin(2 * mu) + e1 * e1 * (21 / 16 - 55 * e1 * e1 / 32) * Math.sin(4 * mu);
Run Code Online (Sandbox Code Playgroud)

C#

double mu = 0.6962788561718957;
double e1 = 0.0016792203861749964;
double phi1 = mu + e1 * (3 / 2 - 27 * e1 * e1 / 32) * …
Run Code Online (Sandbox Code Playgroud)

javascript c# math arithmetic-expressions operator-precedence

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