Здравствуйте, Qodomoc, Вы писали:
Q>Занимательный вопрос от Липперта:
Слишком просто
Здравствуйте, Qodomoc, Вы писали:
Q>Занимательный вопрос от Липперта:
Q>http://blog.coverity.com/2014/09/17/spot-defect-randomness/#.VBq4A_kS3Hs.
Соглашусь, слишком простой вопрос. Вообще сама задумка преобразовывать в строку всё число только лишь для того чтобы взять первую цифру десятичного представления — плохое решение. Всё равно что делать "select * from MyTable" только лишь для того, чтобы посчитать количество записей, а далее на клиенте вручную итерироваться по всему датасету и инкрементить счётчик.
Здравствуйте, Qodomoc, Вы писали:
Q>Занимательный вопрос от Липперта:
Q>http://blog.coverity.com/2014/09/17/spot-defect-randomness/#.VBq4A_kS3Hs.
Как уже написали в комментариях, первая проблема, которая может привести к неравномерному распределению — это scientific E notation.
Но есть и другая проблема, которая может покрешить программу с IndexOutOfRangeException. Она связана с тем, что оверлоад double.ToString() без параметров преобразует число в строку с потерей информации (и с возможным округлением). Чтобы получить точное представление, нужно использовать double.ToString("R").
5.9999999999999991.ToString() ==> 6
5.9999999999999991.ToString("R") ==> 5.9999999999999991
double.Equals(5.9999999999999991, 6) ==> False
The Round-trip (“R”) Format Specifier
Здравствуйте, Qodomoc, Вы писали:
Q>Занимательный вопрос от Липперта:
Q>http://blog.coverity.com/2014/09/17/spot-defect-randomness/#.VBq4A_kS3Hs.
Какой ужас — почему-то сразу вспомнился код:
bool val;
if (val.ToString().Length < 5)
{
//val is true
}
Здравствуйте, Mr.Delphist, Вы писали:
MD>Вообще сама задумка преобразовывать в строку всё число только лишь для того чтобы взять первую цифру десятичного представления — плохое решение.
Продемонстрируй свой вариант.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
Здравствуйте, AndrewVK, Вы писали:
AVK>Продемонстрируй свой вариант.
Math.Truncate()
Здравствуйте, QrystaL, Вы писали:
QL>Math.Truncate()
Это несколько не то. Хотя в контексте кубиков, конечно, подойдет.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>