using System;
namespace ConsoleApplication2
{
class Program
{
static float FooFloat(float a)
{
return a * 42;
}
static Single FooSingle(Single a)
{
return a * 42;
}
static void Main(string[] args)
{
float a = FooFloat(10);
float b = FooSingle(10);
}
}
}
и теперь внимания, IL код FooFloat:
.method private hidebysig static float32
FooFloat(float32 a) cil managed
{
// Code size 8 (0x8)
.maxstack 8
IL_0000: ldarg.0
IL_0001: ldc.r4 42.
IL_0006: mul
IL_0007: ret
} // end of method Program::FooFloat
FooSingle:
.method private hidebysig static float32
FooSingle(float32 a) cil managed
{
// Code size 8 (0x8)
.maxstack 8
IL_0000: ldarg.0
IL_0001: ldc.r4 42.
IL_0006: mul
IL_0007: ret
} // end of method Program::FooSingle
IL код идентичен. функции выполняю одно и то-же. ибо, как говорилось раньше, Single это псевдоним float. Т.е. идея, которою тебе предложили, крайне неадекватна.
адекватную идею кидал джимон. решайте все на типах с фиксированной точкой.
например вот, классик:
http://stackoverflow.com/questions/6...oint-math-in-c
сам не проверял, поэтому работоспособность не гарантирую.