3

我想将双精度转换为纯函数中的字符串。我很困惑为什么这不是纯粹的:

wstring fromNumber(double n) pure {
    import std.format;
    return std.format.format!("%s"w)(n);
}

有没有办法以某种方式实现此功能,pure而无需重新实现将双精度转换为 base10 字符串的逻辑?

4

1 回答 1

4

所以它不纯的原因是转换取决于全局信息,如语言环境(例如1,4vs 1.4)和 CPU 中的浮点舍入标志。D 实现调用了依赖于这些的 C 函数。所以我认为答案是有人将不得不重新实现逻辑,并且由于很多原因,这并不重要。

于 2019-12-28T15:22:47.183 回答