For me in 0.3.3, `int32(1.1)` does the rounding and gives 1, while 
`convert(Int32, 1.1)` throws the InexactError.  

Even if the linspace methods in base don't do the auto-conversion you're 
looking for, you could always write your own method that just does

linspace(start, stop, convert(Int, n))

and put it in your startup file so it's always there.

On Saturday, November 29, 2014 12:46:37 PM UTC-8, Christoph Ortner wrote:
>
>
> When I want to just write a quick script to test and idea, then I don't 
> want to check that I've created my indices, array lengths etc as the 
> correct type. I think for functions such as linspace not performing an 
> automatic type conversion is a big mistake.
>
> I thought that in previous Julia verions   `int32(1.1)`  would throw an 
> error (maybe I misremember this). Now it just converts it to 1. I then 
> agree that this is a bit dangerous. It should throw an error because 1.1 
> cannot be converted  to int. This would resolve the issue --- but of course 
> there may be others that I don't appreciate.
>
>    Christoph
>
>
>
>
> On Saturday, 29 November 2014 13:22:05 UTC, Tamas Papp wrote:
>>
>> In general, I am more concerned about the following scenario: type A 
>> makes sense, type B in general, does not, yet a subset of type B values 
>> can be converted to A in a reasonable way, so an the implementation 
>> performs this silently and everything seems fine. 
>>
>> But at the same time, had I known that I left a type B value in there, I 
>> would be concerned, eg because I am assuming that it is exact when it 
>> isn't (integers vs floats) is problematic, or that conversion is 
>> possible only for a subset of the domain, and other values are possible 
>> but rare enough for my unit tests not to discover them, and will strike 
>> me on the nose at some future point like a rake carelessly left in the 
>> grass. 
>>
>> Best, 
>>
>> Tamas 
>>
>> On Sat, Nov 29 2014, Stefan Karpinski <[email protected]> wrote: 
>>
>> > Our conversions throw errors when the value cannot be converted exactly 
>> these days so it could be done pretty safely. But yes, this is just because 
>> there's no applicable method of linspace. 
>> > 
>> > 
>> >> On Nov 29, 2014, at 7:07 AM, Tamas Papp <[email protected]> wrote: 
>> >> 
>> >> I think of this as a feature: using a float when only an integer makes 
>> >> sense is most likely a bug in my code. Automatic conversion would mask 
>> >> the problem. 
>> >> 
>> >> Best, 
>> >> 
>> >> Tamas 
>> >> 
>> >>> On Sat, Nov 29 2014, [email protected] wrote: 
>> >>> 
>> >>> One of the primary paradigms of Julia is the use of multiple 
>> dispatch, that 
>> >>> is choosing which method to call based on the types of the parameters 
>> >>> provided.  To quote from the manual 
>> >>> http://docs.julialang.org/en/latest/manual/methods/#defining-methods 
>> "No 
>> >>> automatic casting or conversion of function arguments is ever 
>> performed: 
>> >>> all conversion in Julia is non-magical and completely explicit." 
>> >>> 
>> >>> Cheers 
>> >>> Lex 
>> >>> 
>> >>>> On Saturday, November 29, 2014 8:17:26 PM UTC+10, Christoph Ortner 
>> wrote: 
>> >>>> 
>> >>>> 
>> >>>> In Julia 3.3  `linspace(0, 1, 10) `  works, but    `linspace(0, 1, 
>> 10.)` 
>> >>>> does not. 
>> >>>> 
>> >>>> Why is the type not automatically converted to Int when possible? Is 
>> this 
>> >>>> intended or a bug? 
>> >>>> 
>> >>>>    Christoph 
>> >>>> 
>> >>>> 
>> >>>> 
>> >>>> 
>> >>>> 
>> >>>> 
>> >>>> 
>> >>>> 
>>
>

Reply via email to