小编Han*_*rbe的帖子

为什么在C#和JavaScript中处理具有许多有效数字的数字会有所不同?

如果JavaScript的Number和C#的double指定相同(IEEE 754),为什么具有许多有效数字的数字处理不同?

var x = (long)1234123412341234123.0; // 1234123412341234176   - C#
var x =       1234123412341234123.0; // 1234123412341234200   - JavaScript
Run Code Online (Sandbox Code Playgroud)

我并不关心IEEE 754不能代表数字1234123412341234123这一事实.我担心这两个实现对于无法用完全精度表示的数字不起作用.

这可能是因为IEEE 754未指定,一个或两个实现有故障或者它们实现了IEEE 754的不同变体.

此问题与C#中的浮点输出格式问题无关.我正在输出64位整数.考虑以下:

long x = 1234123412341234123; Console.WriteLine(x); // Prints 1234123412341234123 double y = 1234123412341234123; x = Convert.ToInt64(y); Console.WriteLine(x); // Prints 1234123412341234176

相同的变量打印不同的字符串,因为值不同.

javascript c# ieee-754

8
推荐指数
1
解决办法
491
查看次数

如何强制所有派生类实现抽象方法或属性?

所有具体类都必须实现抽象函数.

有时您希望强制所有派生类实现抽象函数,甚至是具体类的派生.

class Base { protected abstract Base Clone(); }
class Concrete : Base { protected override Base Clone(){...}; }
class Custom : Concrete {}
Run Code Online (Sandbox Code Playgroud)

我希望编译器告诉程序员该类Custom需要实现Clone().有办法吗?

.net c# rules

7
推荐指数
1
解决办法
2798
查看次数

拜托,我现在想要我的私人虚拟广告

禁止私有虚拟功能的原因是什么?

空私有虚拟可以启用低摩擦纯定制点.

抽象功能具有高摩擦力,受保护的虚拟引起混乱和噪音.

进一步说明:

非虚拟接口模式将接口责任(公共)与提供定制点(虚拟)分开.

在课堂设计中使用NVI时,我必须保护我的虚拟机.可以选择将它们设为私有使得意图更加强大.这意味着后代只能提供定制,并且不会混淆是否调用基数,事实上它是被禁止的.一定有充分的理由明确禁止它(诊断:"私有方法不能是多态的").

c#

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

标签 统计

c# ×3

.net ×1

ieee-754 ×1

javascript ×1

rules ×1