9

与其他语言一样简单,我似乎无法在 d 编程语言中找到可以将字符串(例如:“234.32”)转换为双精度/浮点数/实数的选项。

使用 std.c.stdio 库中的 atof 仅在我使用常量字符串时才有效。(例如:atof("234.32")有效,但atof(tokens[i]);令牌是带有字符串的动态数组不起作用)。

如何在 d 编程语言中将字符串转换或解析为实数/双精度/浮点数?

4

2 回答 2

16

简单的。

import std.conv;
import std.stdio;    

void main() {
    float x = to!float("234.32");
    double y = to!double("234.32");

    writefln("And the float is: %f\nHey, we also got a double: %f", x, y);
}

std.conv是D中转换的瑞士军刀。真是令人印象深刻!

于 2012-09-26T15:58:52.187 回答
8

要从大多数任何类型转换为大多数任何其他类型,请使用std.conv.to. 例如

auto d = to!double("234.32");

或者

auto str = to!string(234.32);

另一方面,如果你想从一个字符串中解析几个空格分隔的值(在你去的时候从字符串中删除值),那么使用std.conv.parse. 例如

auto str = "123 456.7 false";

auto i = parse!int(str);
str = str.stripLeft();
auto d = parse!double(str);
str = str.stripLeft();
auto b = parse!bool(str);

assert(i == 123);
assert(d == 456.7);
assert(b == false);
于 2012-09-26T17:02:36.130 回答