rendered paste body [StructLayout(LayoutKind.Explicit)]
public struct IncrementableFloat
{
[FieldOffset(0)]
int mAsInt;
[FieldOffset(0)]
float mAsFloat;
public float Value
{
get
{
return mAsFloat;
}
set
{
mAsFloat = value;
}
}
public float IncreaseByMinimum()
{
mAsInt++;
return mAsFloat;
}
public float DecreaseByMinimum()
{
mAsInt--;
return mAsFloat;
}
}
USAGE:
IncrementableFloat incrementableFloat = new IncrementableFloat();
incrementableFloat.Value = 1.0f;
for (int i = 0; i < 100; i++)
{
System.Console.WriteLine(incrementableFloat.Value.ToString("G9"));
incrementableFloat.IncreaseByMinimum();
}
OUTPUT:
1
1.00000012
1.00000024
1.00000036
1.00000048
1.0000006
1.00000072
1.00000083
1.00000095
1.00000107
1.00000119
1.00000131
1.00000143
1.00000155
1.00000167
1.00000179
1.00000191
1.00000203
1.00000215
1.00000226
1.00000238
1.0000025
1.00000262
1.00000274
1.00000286
1.00000298
1.0000031
1.00000322
1.00000334
1.00000346
1.00000358
1.0000037
1.00000381
1.00000393
1.00000405
1.00000417
1.00000429
1.00000441
1.00000453
1.00000465
1.00000477
1.00000489
1.00000501
1.00000513
1.00000525
1.00000536
1.00000548
1.0000056
1.00000572
1.00000584
1.00000596
1.00000608
1.0000062
1.00000632
1.00000644
1.00000656
1.00000668
1.00000679
1.00000691
1.00000703
1.00000715
1.00000727
1.00000739
1.00000751
1.00000763
1.00000775
1.00000787
1.00000799
1.00000811
1.00000823
1.00000834
1.00000846
1.00000858
1.0000087
1.00000882
1.00000894
1.00000906
1.00000918
1.0000093
1.00000942
1.00000954
1.00000966
1.00000978
1.00000989
1.00001001
1.00001013
1.00001025
1.00001037
1.00001049
1.00001061
1.00001073
1.00001085
1.00001097
1.00001109
1.00001121
1.00001132
1.00001144
1.00001156
1.00001168
1.0000118