针对为什么在Double.NaN=0.0d/0.0的定义中出现“d”?和为什么用double结果总是0这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展.net–为什么在尝试使用HttpLis
针对为什么在Double.NaN = 0.0d / 0.0的定义中出现“ d”?和为什么用double结果总是0这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展.net – 为什么在尝试使用HttpListener时会出现“AccessDenied”?、asp.net – 为什么在添加新的响应标头时会出现“平台不支持异常”?、delphi – 为什么在使用TStream类时会出现“抽象错误”?、java – 为什么它总是调用父类方法“doTest(double d)”?等相关知识,希望可以帮助到你。
本文目录一览:- 为什么在Double.NaN = 0.0d / 0.0的定义中出现“ d”?(为什么用double结果总是0)
- .net – 为什么在尝试使用HttpListener时会出现“AccessDenied”?
- asp.net – 为什么在添加新的响应标头时会出现“平台不支持异常”?
- delphi – 为什么在使用TStream类时会出现“抽象错误”?
- java – 为什么它总是调用父类方法“doTest(double d)”?
为什么在Double.NaN = 0.0d / 0.0的定义中出现“ d”?(为什么用double结果总是0)
我刚刚遇到了NaN
in 的定义Double.class
。它说:
/** * A constant holding a Not-a-Number (NaN) value of type * {@code double}. It is equivalent to the value returned by * {@code Double.longBitsToDouble(0x7ff8000000000000L)}. */ public static final double NaN = 0.0d / 0.0;
我知道,根据Java规范这些文字代表了同一个号码:0.0
,0.0d
,和0.0D
。
同样对于其他常量,它们不使用’d’后缀:
public static final double POSITIVE_INFINITY = 1.0 / 0.0;public static final double NEGATIVE_INFINITY = -1.0 / 0.0;
他们为什么需要在NaN定义中将后缀d写入0.0的第一部分?
这是故意还是偶然?
答案1
小编典典根据Oak语言规范,浮点文字的格式为:
- 2.0d或2.0D double
- 2.0f或2.0F或2.0 float
但这在Java 1.0版中变成了熟悉的Java方式
如果浮点文字后缀为ASCII字母F或f,则其类型为float。否则,其类型为double,并且可以选择在其后缀ASCII字母D或d。
也许是为了使它与类似于C的语言保持一致而进行了更改,在这种语言中,后缀的缺乏意味着加倍。
因此,这d
似乎是一个历史遗迹;不过,在Oak规范的链接版本(“初步”)中,有一个注解指出NaN尚未实现。也许它是在稍晚的版本中实现的,此后一直保持不变。
.net – 为什么在尝试使用HttpListener时会出现“AccessDenied”?
赢7和VS2010 B2.我正在尝试使用内置的HttpListener编写一个最小的Web服务器.但是,我一直收到AccessDenied异常.这是代码:
int Run(string[] args) { _server = new HttpListener(); _server.Prefixes.Add("http://*:9669/"); _server.Start(); Console.WriteLine("Server bound to: {0}",_server.Prefixes.First()); _server.BeginGetContext(HandleContext,null); }
如果我绑定到系统端口,我可以理解需要以管理员身份运行,但我不明白为什么我对9669的绑定应该需要特殊权限.
有任何想法吗?
解决方法
我有一个答案.
netsh http add urlacl url=http://*:9669/ user=fak listen=yes
疯.这是我修改过的功能:
int Run(string[] args) { var prefix = "http://*:9669/"; var username = Environment.GetEnvironmentvariable("USERNAME"); var userdomain = Environment.GetEnvironmentvariable("USERDOMAIN"); _server = new HttpListener(); _server.Prefixes.Add(prefix); try { _server.Start(); } catch (HttpListenerException ex) { if (ex.ErrorCode == 5) { Console.WriteLine("You need to run the following command:"); Console.WriteLine(" netsh http add urlacl url={0} user={1}\\{2} listen=yes",prefix,userdomain,username); return -1; } else { throw; } } Console.WriteLine("Server bound to: {0}",null); }
asp.net – 为什么在添加新的响应标头时会出现“平台不支持异常”?
Response.Headers["X-XRDS-Location"] = url
例外消息:
This operation requires IIS integrated pipeline mode.
任何帮助,将不胜感激.
解决方法
delphi – 为什么在使用TStream类时会出现“抽象错误”?
type TForm1 = class(TForm) Image1: timage; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; procedure TForm1.Button1Click(Sender: TObject); var imagestream: TStream; begin imagestream := TStream.Create; Image1.Picture.Bitmap.SavetoStream(imagestream); ... end;
我需要提取TBitmap的流以供以后处理……我做错了什么?
解决方法
TStream is the base class type for stream objects that can read from or write to varIoUs kinds of storage media,such as disk files,dynamic memory,and so on.
Use specialized stream objects to read from,write to,or copy information stored in a particular medium.
您可能希望使用TMemoryStream或TFileStream,顾名思义,它将流内容存储在内存或系统文件中.
procedure TForm1.Button1Click(Sender: TObject); var imagestream: TMemoryStream; begin imagestream := TMemoryStream.Create; try Image1.Picture.Bitmap.SavetoStream(imagestream); ... finally imagestream.Free; end; end;
java – 为什么它总是调用父类方法“doTest(double d)”?
class polymorphisomTest { class Base { public void doTest(double d) { System.out.println("From Base"); } } class DerivedBase extends Base { public void doTest(int d) { System.out.println("From Derived Base"); } } public void use(Base base) { base.doTest(3); } public void run() { use(new Base()); use(new DerivedBase ()); } public static void main(String []cmd) { new polymorphisomTest ().run(); } }
这里是来自父类的doTest(double d)和来自子类的doTest(int d),但是当我调用base.doTest(3)时,它总是调用父类方法,即使我的对象引用是不同的.这背后的原因是什么?
解决方法
class Base { public void doTest(double d) { System.out.println("From Base"); } } class DerivedBase extends Base { public void doSomethingElse(int d) { System.out.println("From Derived Base"); } }
更改参数的类型会更改方法签名,并使其成为新方法,而不是覆盖父类的方法.
当你调用base.doTest(3)时,编译器将调用doTest(double),因为这是Base类与参数匹配的唯一方法.因为该方法没有被任何东西覆盖,所以会调用Base.doTest.
关于为什么在Double.NaN = 0.0d / 0.0的定义中出现“ d”?和为什么用double结果总是0的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于.net – 为什么在尝试使用HttpListener时会出现“AccessDenied”?、asp.net – 为什么在添加新的响应标头时会出现“平台不支持异常”?、delphi – 为什么在使用TStream类时会出现“抽象错误”?、java – 为什么它总是调用父类方法“doTest(double d)”?等相关知识的信息别忘了在本站进行查找喔。
本文标签: