digitalmars.D.learn - Conversion problem.
- Den_d_y (112/112) Jun 25 2019 Hello! Here I am again, with my problem ... In my program, I
- H. S. Teoh (9/11) Jun 25 2019 [...]
Hello! Here I am again, with my problem ... In my program, I cannot manage to convert from "double" to "int". Here is the code: << ++ struct Animation - the structure that implements the animation + / struct Animation { private List! (Image) img; /// List of pictures in the animation private double f; /// current picture in animation private double s; /// speed of animation /// speed setter (double s) public void setSpeed (double sp) { s = sp; } /// Adds a picture to the list public void addFrame (Image pia) { img.add (pia); } /// Sets the image to a specific place in the list public void setFrame (int id, Image pia) { img.set (id, pia); } /// Returns a picture from the list public Image getFrame (int id) { return img.get (id); } /// Returns the list public List! (Image) getList () { return img; } /// The animation event itself. Returns the current animation image. public Image step () { writeln ("Animation :: step start ..."); if (floor (f) == img.length) { f = 0.1f; writeln ("Animation :: f = 0.1f"); } else { f + = s; writeln ("Animation :: f + = s"); } const int i = roundTo! (int) (f); writeln ("i set"); writeln ("i:", i); return img.get (i); } } >> Another code: << import std.stdio; / ++ The structure that implements the list of objects. + / struct List (TObj) { private TObj [] obj; /// Adds an object to the list public void add (TObj o) { obj ~ = o; } /// Returns an object from the list public TObj get (int id) { return obj [id]; } /// Sets an object in a specific place. public void set (int id, TObj o) { obj [id] = o; } /// Returns the length of the list public int length () { return obj.length; } /// Gives the garbage collector a signal to clear the list. public void free () { obj = null; } } >> "If you don’t understand something, the translator has bricked it." In the moment: << public Image step () { writeln ("Animation :: step start ..."); if (floor (f) == img.length) { f = 0.1f; writeln ("Animation :: f = 0.1f"); } else { f + = s; writeln ("Animation :: f + = s"); } const int i = roundTo! (int) (f); // Error here writeln ("i set"); writeln ("i:", i); return img.get (i); } >> The compiler is silent, but when you start the program, reaching this place, it hangs. Is there any way to convert a "double" to an "int" without errors?
Jun 25 2019
On Tue, Jun 25, 2019 at 12:08:07PM +0000, Den_d_y via Digitalmars-d-learn wrote:Hello! Here I am again, with my problem ... In my program, I cannot manage to convert from "double" to "int". Here is the code:[...] Did you try this? import std.conv : to; double d = ...; int i = d.to!int; T -- People tell me I'm stubborn, but I refuse to accept it!
Jun 25 2019
On Tuesday, 25 June 2019 at 16:44:28 UTC, H. S. Teoh wrote:On Tue, Jun 25, 2019 at 12:08:07PM +0000, Den_d_y via Digitalmars-d-learn wrote:This does not work. The program hangs at this stage, even the code you have proposed also does not work as we would like. Maybe I'm doing something wrong?Hello! Here I am again, with my problem ... In my program, I cannot manage to convert from "double" to "int". Here is the code:[...] Did you try this? import std.conv : to; double d = ...; int i = d.to!int; T
Jun 25 2019
On Wednesday, 26 June 2019 at 05:53:29 UTC, Den_d_y wrote:On Tuesday, 25 June 2019 at 16:44:28 UTC, H. S. Teoh wrote:Something is tracked: std.conv.ConvOverflowException C: \ D \ dmd2 \ windows \ bin \ .. \ .. \ src \ phobos \ std \ conv.d (1457): Conversion Underflow Overflow What could it beOn Tue, Jun 25, 2019 at 12:08:07PM +0000, Den_d_y via Digitalmars-d-learn wrote:This does not work. The program hangs at this stage, even the code you have proposed also does not work as we would like. Maybe I'm doing something wrong?Hello! Here I am again, with my problem ... In my program, I cannot manage to convert from "double" to "int". Here is the code:[...] Did you try this? import std.conv : to; double d = ...; int i = d.to!int; T
Jun 26 2019
On Wednesday, 26 June 2019 at 10:49:50 UTC, Den_d_y wrote:On Wednesday, 26 June 2019 at 05:53:29 UTC, Den_d_y wrote:How stupid ... You just had to assign the value "0" to the value 0 ... The problem is solved.On Tuesday, 25 June 2019 at 16:44:28 UTC, H. S. Teoh wrote:Something is tracked: std.conv.ConvOverflowException C: \ D \ dmd2 \ windows \ bin \ .. \ .. \ src \ phobos \ std \ conv.d (1457): Conversion Underflow Overflow What could it beOn Tue, Jun 25, 2019 at 12:08:07PM +0000, Den_d_y via Digitalmars-d-learn wrote:This does not work. The program hangs at this stage, even the code you have proposed also does not work as we would like. Maybe I'm doing something wrong?[...][...] Did you try this? import std.conv : to; double d = ...; int i = d.to!int; T
Jun 26 2019