c++ double |
Здравствуйте, гость ( Вход | Регистрация )
c++ double |
mycoding |
5.3.2010, 9:52
Сообщение
#1
|
Студент Группа: Участник Сообщений: 52 Регистрация: 17.11.2009 Пользователь №: 1237 Спасибо сказали: 0 раз(а) Репутация: 0 |
Подскажите пожалуйста, как сделать точность знаков вот в этом случае, ну например 10 после запятой
for(int i=0;i<100;i++) { sin1[i]=sin((double)i/10)*10+250; } |
|
|
Iron Bug |
5.3.2010, 14:55
Сообщение
#2
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
"точность знаков" - это при печати тебе надо? в double нет никакой "точности знаков", он будет хранить 8 байт и там будет 15 знаков, по определению типа, если это Си.
можешь, конечно, попробовать искусственно отсекать "лишнее", если тебе очень критично. но вопрос - зачем? |
|
|
mycoding |
5.3.2010, 16:07
Сообщение
#3
|
Студент Группа: Участник Сообщений: 52 Регистрация: 17.11.2009 Пользователь №: 1237 Спасибо сказали: 0 раз(а) Репутация: 0 |
Да нет, надо не cout, а именно в массив записать с точностью до 8-10 знаков после запятой, а то тот код который приведён, он почему-то только 3 знака берёт после запятой, а должно быть 6.
|
|
|
Iron Bug |
5.3.2010, 22:01
Сообщение
#4
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
Да нет, надо не cout, а именно в массив записать с точностью до 8-10 знаков после запятой, а то тот код который приведён, он почему-то только 3 знака берёт после запятой, а должно быть 6. а как ты проверял, что 3? вообще, в double дофига знаков. а sin возвращает значение типа double. у тебя там значения ни о чём для double - должны сохраняться все 15 знаков. |
|
|
mycoding |
6.3.2010, 13:36
Сообщение
#5
|
Студент Группа: Участник Сообщений: 52 Регистрация: 17.11.2009 Пользователь №: 1237 Спасибо сказали: 0 раз(а) Репутация: 0 |
Проверял на javascripte, нужны ещё 6 знаков после запятой.
|
|
|
Iron Bug |
6.3.2010, 20:28
Сообщение
#6
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
Проверял на javascripte, нужны ещё 6 знаков после запятой. поясни, как ты проверял сишный вывод "на жабаскрипте"? у Си никакого урезания в double не происходит. жабаскрипт - не строго типизированный язык и, вообще говоря, там даже не знаю, можно ли надеяться хоть на какую-то точность представления или нет. это скриптовый язык, не рассчитанный на математические вычисления. я не знаю, как ты эти два слишком разных языка скрестить ухитрился, но попробуй сделай обычный вывод в консоль средставами Си и убедишься, что Си выдаёт тебе более чем достаточно знаков. |
|
|
Tonal |
7.3.2010, 18:59
Сообщение
#7
|
Активный участник Группа: Участник Сообщений: 452 Регистрация: 6.12.2007 Из: Новосибирск Пользователь №: 34 Спасибо сказали: 69 раз(а) Репутация: 17 |
Читать что такое числа с плавающей точкой до просветления.
|
|
|
SABROG |
8.3.2010, 20:39
Сообщение
#8
|
Профессионал Группа: Участник Сообщений: 1207 Регистрация: 8.12.2008 Из: Russia, Moscow Пользователь №: 446 Спасибо сказали: 229 раз(а) Репутация: 34 |
Так например:
10.0 - десятые, 1 знак 100.0 - сотые, 2 знака 1000.0 - тысячные, 3 знака ... 1000000.0 - миллионные, 6 знаков после запятой Только надо проверку какую-нибудь, чтобы int не переполнился. |
|
|
Текстовая версия | Сейчас: 28.1.2025, 18:43 |