Netduino home hardware projects downloads community

Jump to content


Photo

C# help

C# convert

  • Please log in to reply
2 replies to this topic

#1 JBkey

JBkey

    Member

  • Members
  • PipPip
  • 14 posts
  • LocationAveiro, Portugal

Posted 17 April 2015 - 01:39 PM

Hi.

 

 

I'm stuck with variables format. I know this is a stupid question but I'm on it for 2 hours and I'm losing my mind.

 

I began in this programing stuff maybe 2 months ago, so I'm really new at it.

 

The problem is:

 

I have:

command.Data = new ushort[] { xx, yy, zz };

And I need to do:

ushort zz = System.Math.Tan(c1AngleX);

But the output of System.Math.Tan is "double", so I kinda can't have the "ushort" there.

I tried this

ushort zz = (Convert.ToUInt16 (System.Math.Tan(c1AngleX));

But I can't.

 

 

 

There's any way to convert "double" to "ushort"?

 

 



#2 Mario Vernari

Mario Vernari

    Advanced Member

  • Members
  • PipPipPip
  • 1768 posts
  • LocationVenezia, Italia

Posted 17 April 2015 - 04:22 PM

Uhmmm...

The conversion is rather trivial:

ushort zz = (ushort)System.Math.Tan(c1AngleX);

However, I don't think the "ushort" is a convenient way to store the tangent values, unless they fall with a restrict angle interval.

Moreover, the "ushort" isn't a nice (nor common) type: the "unsigned" types lead to mistakes, unless you check for under/overflow.

Why don't you use "float" instead of "ushort"?

 

On the regular .Net (desktop) framework I'd use "double" instead of "float", but here you have a tiny board and the resources (CPU and RAM) are precious. Double takes 8 bytes and Single (float) takes 4. Furthermore, the float math should be natively supported, but the "double" not.

 

Cheers


Biggest fault of Netduino? It runs by electricity.

#3 cr0w5t3r

cr0w5t3r

    New Member

  • Members
  • Pip
  • 9 posts
  • LocationUK

Posted 10 May 2015 - 09:23 PM

I've been using .NET for about 3 1/2 years now and I've never even come across the ushort type. I don't normally have to be too concious of how many bytes a variable would take up though which might play a factor in my answer (Usually work on web applications).

 

I would basically second what Mario suggested in that you should probably just use a float if resource is going to be an issue else just return it natively as a double.

 

The code could be;

// You don't have to set the variable type if you use the 'var' keyword as
// it will just be set to whatever is returned from the method. In this case a double.
var zz = System.Math.Tan(12342);

or

float zx = (float)System.Math.Tan(12342);

Most of the time I have managed to get away with using the following types in my code;

 

  • int
  • float
  • double
  • decimal
  • string
  • bool
  • object

 

Nick






0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

home    hardware    projects    downloads    community    where to buy    contact Copyright © 2016 Wilderness Labs Inc.  |  Legal   |   CC BY-SA
This webpage is licensed under a Creative Commons Attribution-ShareAlike License.