【发布时间】:2015-12-14 01:09:00
【问题描述】:
不知何故,我一直假设浮点和整数值的处理方式相同,除了一个会有一个“。”字符。
所以对于这样的代码:
auto i = 0100;
std::cout << i;
我得到了预期的输出64;
但是,当我尝试以下代码时:
auto d = 0100.0;
std::cout << d;
我得到了输出100,这不是预期的。现在浮点部分可能不处理前导 0。所以我尝试了一些真正应该有效的方法:
auto d = 1.0e-010;
std::cout << d;
由于指数本身实际上是一个整数值,它可以理解八进制值是有道理的,但输出是1e-10。
这是来自标准还是来自 g++(我的编译器)的问题?我将如何编写八进制浮点数?
十六进制似乎表现不同:
auto d = 0x100.0;
给error: hexadecimal floating constants require an exponent
但是:
auto d = 0x1e3;
std::cout << d;
产生483。而
auto d = 0x1e0x3;
给error: unable to find numeric literal operator ‘operator"" x3’
【问题讨论】:
-
AFAIK 在 C++ 中没有八进制浮点文字。
-
你尝试过什么(除了这个)?你在哪里卡住了?你研究了什么?
-
认真的吗?为什么你想要一个八进制浮点文字?
-
我认为这是一个完全合理的问题。我只是好奇。
-
@KarolyHorvath 一个人研究自己感兴趣的东西。现在可能没有人需要,所以为什么不研究有趣的东西呢?
标签: c++ floating-point octal