Thread overview | ||||||||
---|---|---|---|---|---|---|---|---|
|
December 11, 2018 D do not know which function to use apparently | ||||
---|---|---|---|---|
| ||||
Hello, people! The following case: ------------------- int var = floor(sqrt(n)) // where 'n' is a 'const int' Produces the following error: ----------------------------- Error: std.math.sqrt called with argument types (const(int)) matches both: /usr/include/dmd/phobos/std/math.d(2067): std.math.sqrt(float x) and: /usr/include/dmd/phobos/std/math.d(2073): std.math.sqrt(real x) Please, could you tell me how do I solve this?! Thank you! |
December 11, 2018 Re: D do not know which function to use apparently | ||||
---|---|---|---|---|
| ||||
Posted in reply to Narxa | On Tuesday, 11 December 2018 at 14:16:05 UTC, Narxa wrote:
> int var = floor(sqrt(n)) // where 'n' is a 'const int'
You can just cast it to float:
floor(sqrt( cast(float) n ));
and it will work.
|
December 11, 2018 Re: D do not know which function to use apparently | ||||
---|---|---|---|---|
| ||||
Posted in reply to Adam D. Ruppe | On Tuesday, 11 December 2018 at 14:22:30 UTC, Adam D. Ruppe wrote: > On Tuesday, 11 December 2018 at 14:16:05 UTC, Narxa wrote: >> int var = floor(sqrt(n)) // where 'n' is a 'const int' > > You can just cast it to float: > > floor(sqrt( cast(float) n )); > > and it will work. It produced the following error: -------------------------------- Error: cannot implicitly convert expression floor(sqrt(cast(float)n)) of type float to int I am using 'dmd' compiler if it matters. |
December 11, 2018 Re: D do not know which function to use apparently | ||||
---|---|---|---|---|
| ||||
Posted in reply to Narxa | On 12/11/18 9:47 AM, Narxa wrote:
> On Tuesday, 11 December 2018 at 14:22:30 UTC, Adam D. Ruppe wrote:
>> On Tuesday, 11 December 2018 at 14:16:05 UTC, Narxa wrote:
>>> int var = floor(sqrt(n)) // where 'n' is a 'const int'
>>
>> You can just cast it to float:
>>
>> floor(sqrt( cast(float) n ));
>>
>> and it will work.
>
> It produced the following error:
> --------------------------------
> Error: cannot implicitly convert expression floor(sqrt(cast(float)n)) of type float to int
>
>
> I am using 'dmd' compiler if it matters.
You need to cast the result back to int.
-Steve
|
December 11, 2018 Re: D do not know which function to use apparently | ||||
---|---|---|---|---|
| ||||
Posted in reply to Steven Schveighoffer | On Tuesday, 11 December 2018 at 14:53:02 UTC, Steven Schveighoffer wrote:
> On 12/11/18 9:47 AM, Narxa wrote:
>> On Tuesday, 11 December 2018 at 14:22:30 UTC, Adam D. Ruppe wrote:
>>> On Tuesday, 11 December 2018 at 14:16:05 UTC, Narxa wrote:
>>>> int var = floor(sqrt(n)) // where 'n' is a 'const int'
>>>
>>> You can just cast it to float:
>>>
>>> floor(sqrt( cast(float) n ));
>>>
>>> and it will work.
>>
>> It produced the following error:
>> --------------------------------
>> Error: cannot implicitly convert expression floor(sqrt(cast(float)n)) of type float to int
>>
>>
>> I am using 'dmd' compiler if it matters.
>
> You need to cast the result back to int.
>
> -Steve
Yes, it worked:
---------------
int var = cast(int) floor(sqrt( cast(float) n ));
I thought floor already returned an 'int' but I was mistaken.
Thank you very much.
|
December 11, 2018 Re: D do not know which function to use apparently | ||||
---|---|---|---|---|
| ||||
Posted in reply to Narxa | On Tuesday, 11 December 2018 at 15:17:10 UTC, Narxa wrote:
> Yes, it worked:
> ---------------
> int var = cast(int) floor(sqrt( cast(float) n ));
>
>
> I thought floor already returned an 'int' but I was mistaken.
>
> Thank you very much.
I think you don't need floor.
int var = cast(int)(sqrt(cast(float)n));
or:
int var = cast(int)(float(i).sqrt);
or:
int var = float(i).sqrt.to!int;
Andrea
|
Copyright © 1999-2021 by the D Language Foundation