Question

as easy as it is in other languages, i can't seem to find an option in the d programming language where i can convert a string (ex: "234.32") into a double/float/real.

using atof from the std.c.stdio library only works when i use a constant string. (ex: atof("234.32") works but atof(tokens[i]); where tokens is an dynamic array with strings doesn't work).

how to convert or parse a string into a real/double/float in the d-programming language?

Was it helpful?

Solution

Easy.

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 is the swiss army knife of conversion in D. It's really impressive!

OTHER TIPS

To convert from most any type to most any other type, use std.conv.to. e.g.

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

or

auto str = to!string(234.32);

On the other hand, if you're looking to parse several whitespace-separated values from a string (removing the values from the string as you go), then use std.conv.parse. e.g.

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);
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top