Neuron®
The Neuron® is the basis for the creation of open and secure federated networks for smart societies.
Loading...
Searching...
No Matches
Prefixes.cs
1using System;
3
4namespace Waher.Script.Units
5{
10 public enum Prefix
11 {
15 Yotta = 24,
16
20 Zetta = 21,
21
25 Exa = 18,
26
30 Peta = 15,
31
35 Tera = 12,
36
40 Giga = 9,
41
45 Mega = 6,
46
50 Kilo = 3,
51
55 Hecto = 2,
56
60 Deka = 1,
61
65 None = 0,
66
70 Deci = -1,
71
75 Centi = -2,
76
80 Milli = -3,
81
85 Micro = -6,
86
90 Nano = -9,
91
95 Pico = -12,
96
100 Femto = -15,
101
105 Atto = -18,
106
110 Zepto = -21,
111
115 Yocto = -24
116 }
117
121 public static class Prefixes
122 {
128 public static double PrefixToFactor(Prefix Prefix)
129 {
130 return Math.Pow(10, (int)Prefix);
131 }
132
138 public static int PrefixToExponent(Prefix Prefix)
139 {
140 return (int)Prefix;
141 }
142
150 public static Prefix ExponentToPrefix(int Exponent, out int ResidueExponent)
151 {
152 switch (Exponent)
153 {
154 case 24:
155 ResidueExponent = 0;
156 return Prefix.Yotta;
157
158 case 23:
159 ResidueExponent = 2;
160 return Prefix.Zetta;
161
162 case 22:
163 ResidueExponent = 1;
164 return Prefix.Zetta;
165
166 case 21:
167 ResidueExponent = 0;
168 return Prefix.Zetta;
169
170 case 20:
171 ResidueExponent = 2;
172 return Prefix.Exa;
173
174 case 19:
175 ResidueExponent = 1;
176 return Prefix.Exa;
177
178 case 18:
179 ResidueExponent = 0;
180 return Prefix.Exa;
181
182 case 17:
183 ResidueExponent = 2;
184 return Prefix.Peta;
185
186 case 16:
187 ResidueExponent = 1;
188 return Prefix.Peta;
189
190 case 15:
191 ResidueExponent = 0;
192 return Prefix.Peta;
193
194 case 14:
195 ResidueExponent = 2;
196 return Prefix.Tera;
197
198 case 13:
199 ResidueExponent = 1;
200 return Prefix.Tera;
201
202 case 12:
203 ResidueExponent = 0;
204 return Prefix.Tera;
205
206 case 11:
207 ResidueExponent = 2;
208 return Prefix.Giga;
209
210 case 10:
211 ResidueExponent = 1;
212 return Prefix.Giga;
213
214 case 9:
215 ResidueExponent = 0;
216 return Prefix.Giga;
217
218 case 8:
219 ResidueExponent = 2;
220 return Prefix.Mega;
221
222 case 7:
223 ResidueExponent = 1;
224 return Prefix.Mega;
225
226 case 6:
227 ResidueExponent = 0;
228 return Prefix.Mega;
229
230 case 5:
231 ResidueExponent = 2;
232 return Prefix.Kilo;
233
234 case 4:
235 ResidueExponent = 1;
236 return Prefix.Kilo;
237
238 case 3:
239 ResidueExponent = 0;
240 return Prefix.Kilo;
241
242 case 2:
243 ResidueExponent = 0;
244 return Prefix.Hecto;
245
246 case 1:
247 ResidueExponent = 0;
248 return Prefix.Deka;
249
250 case 0:
251 ResidueExponent = 0;
252 return Prefix.None;
253
254 case -1:
255 ResidueExponent = 0;
256 return Prefix.Deci;
257
258 case -2:
259 ResidueExponent = 0;
260 return Prefix.Centi;
261
262 case -3:
263 ResidueExponent = 0;
264 return Prefix.Milli;
265
266 case -4:
267 ResidueExponent = 2;
268 return Prefix.Micro;
269
270 case -5:
271 ResidueExponent = 1;
272 return Prefix.Micro;
273
274 case -6:
275 ResidueExponent = 0;
276 return Prefix.Micro;
277
278 case -7:
279 ResidueExponent = 2;
280 return Prefix.Nano;
281
282 case -8:
283 ResidueExponent = 1;
284 return Prefix.Nano;
285
286 case -9:
287 ResidueExponent = 0;
288 return Prefix.Nano;
289
290 case -10:
291 ResidueExponent = 2;
292 return Prefix.Pico;
293
294 case -11:
295 ResidueExponent = 1;
296 return Prefix.Pico;
297
298 case -12:
299 ResidueExponent = 0;
300 return Prefix.Pico;
301
302 case -13:
303 ResidueExponent = 2;
304 return Prefix.Femto;
305
306 case -14:
307 ResidueExponent = 1;
308 return Prefix.Femto;
309
310 case -15:
311 ResidueExponent = 0;
312 return Prefix.Femto;
313
314 case -16:
315 ResidueExponent = 2;
316 return Prefix.Atto;
317
318 case -17:
319 ResidueExponent = 1;
320 return Prefix.Atto;
321
322 case -18:
323 ResidueExponent = 0;
324 return Prefix.Atto;
325
326 case -19:
327 ResidueExponent = 2;
328 return Prefix.Zepto;
329
330 case -20:
331 ResidueExponent = 1;
332 return Prefix.Zepto;
333
334 case -21:
335 ResidueExponent = 0;
336 return Prefix.Zepto;
337
338 case -22:
339 ResidueExponent = 2;
340 return Prefix.Yocto;
341
342 case -23:
343 ResidueExponent = 1;
344 return Prefix.Yocto;
345
346 case -24:
347 ResidueExponent = 0;
348 return Prefix.Yocto;
349
350 default:
351 if (Exponent > 24)
352 {
353 ResidueExponent = Exponent - 24;
354 return Prefix.Yotta;
355 }
356 else
357 {
358 ResidueExponent = Exponent + 24;
359 return Prefix.Yocto;
360 }
361 }
362 }
363
373 public static bool TryParsePrefix(char ch, out Prefix Prefix)
374 {
375 switch (ch)
376 {
377 case 'Y': Prefix = Prefix.Yotta; break;
378 case 'Z': Prefix = Prefix.Zetta; break;
379 case 'E': Prefix = Prefix.Exa; break;
380 case 'P': Prefix = Prefix.Peta; break;
381 case 'T': Prefix = Prefix.Tera; break;
382 case 'G': Prefix = Prefix.Giga; break;
383 case 'M': Prefix = Prefix.Mega; break;
384 case 'k': Prefix = Prefix.Kilo; break;
385 case 'h': Prefix = Prefix.Hecto; break;
386 //case 'da': Prefix = Prefix.Deka; break;
387 case 'd': Prefix = Prefix.Deci; break;
388 case 'c': Prefix = Prefix.Centi; break;
389 case 'm': Prefix = Prefix.Milli; break;
390 case 'u':
391 case 'µ': Prefix = Prefix.Micro; break;
392 case 'n': Prefix = Prefix.Nano; break;
393 case 'p': Prefix = Prefix.Pico; break;
394 case 'f': Prefix = Prefix.Femto; break;
395 case 'a': Prefix = Prefix.Atto; break;
396 case 'z': Prefix = Prefix.Zepto; break;
397 case 'y': Prefix = Prefix.Yocto; break;
398 default:
399 Prefix = Prefix.None;
400 return false;
401 }
402
403 return true;
404 }
405
411 public static string ToString(Prefix Prefix)
412 {
413 switch (Prefix)
414 {
415 case Prefix.Yotta: return "Y";
416 case Prefix.Zetta: return "Z";
417 case Prefix.Exa: return "E";
418 case Prefix.Peta: return "P";
419 case Prefix.Tera: return "T";
420 case Prefix.Giga: return "G";
421 case Prefix.Mega: return "M";
422 case Prefix.Kilo: return "k";
423 case Prefix.Hecto: return "h";
424 case Prefix.Deka: return "da";
425 case Prefix.None: return string.Empty;
426 case Prefix.Deci: return "d";
427 case Prefix.Centi: return "c";
428 case Prefix.Milli: return "m";
429 case Prefix.Micro: return "µ";
430 case Prefix.Nano: return "n";
431 case Prefix.Pico: return "p";
432 case Prefix.Femto: return "f";
433 case Prefix.Atto: return "a";
434 case Prefix.Zepto: return "z";
435 case Prefix.Yocto: return "y";
436 default:
437 throw new ScriptException("Invalid prefix.");
438 }
439 }
440
441 }
442}
Base class for script exceptions.
Static class managing units.
Definition: Prefixes.cs:122
static Prefix ExponentToPrefix(int Exponent, out int ResidueExponent)
Converts an exponent to a prefix.
Definition: Prefixes.cs:150
static bool TryParsePrefix(char ch, out Prefix Prefix)
Tries to parse a character into a prefix.
Definition: Prefixes.cs:373
static int PrefixToExponent(Prefix Prefix)
Conerts a prefix to an exponent.
Definition: Prefixes.cs:138
static string ToString(Prefix Prefix)
Converts a prefix to its string representation.
Definition: Prefixes.cs:411
static double PrefixToFactor(Prefix Prefix)
Conerts a prefix to a multiplicative factor.
Definition: Prefixes.cs:128
Prefix
SI prefixes. http://physics.nist.gov/cuu/Units/prefixes.html
Definition: Prefixes.cs:11