Bir bölünmə nöqtəsi necə olma nöqtəsi ola bilər? Şöbə 0-a yuvarlaqlaşdırırmı?

ab iki ədəd tam ədədim var, amma onların nisbəti bir üzən nöqtədə lazımdır. Mən bilirəm ki a < b və mən a/b hesablamaq istəyirik, buna görə tam ədəd istifadə etsəm, mən həmişə qalan hissəsini 0 ilə alıram.

Python-da necə bir üzən nöqtə nöqtəsi olacağam?

 c = a / b 
629
12 авг. Nathan Fellman tərəfindən 12 avqust. 2009-08-12 21:25 '09 da 21:25 'da 2009-08-12 21:25
@ 14 cavab
 >>> from __future__ import division >>> a = 4 >>> b = 6 >>> c = a / b >>> c 0.66666666666666663 
722
12 авг. Michael Fairley 12 Avqustda cavab verdi 2009-08-12 21:28 '09 da 21:28 'da 2009-08-12 21:28

c = a / float(b) yerinə yetirərək float istifadə edə bilərsiniz. Nümunəçi və ya nişanlayıcı bir float varsa, nəticə də olacaq.


border=0

İmtina etmə: şərhçiləri qeyd etdiyimiz kimi b , tamsayı və ya üzən nöqtədən başqa bir şey ola bilər (və ya birini təmsil edən bir dize), bu işləməyəcəkdir. Digər növlərlə (məsələn, kompleks ədədlər) məşğul olduqda onları yoxlamaq və ya başqa bir metoddan istifadə etmək lazımdır.

672
12 авг. Steve Trout tərəfindən verilən cavab 12 avqust. 2009-08-12 21:28 '09 da 21:28 'da 2009-08-12 21:28
 c = a / (b * 1.0) 
127
12 авг. cavab Pinochle 12 aug tərəfindən verilir . 2009-08-12 21:26 '09 at 9:26 pm 2009-08-12 21:26

Python'da bölünmə nöqtəsi necə dəyişə bilər?

A və b iki ədəd tam ədədim var, amma onların nisbəti bir üzən nöqtədə lazımdır. Bilirəm ki, <b və mən a / b hesablamaq istəyirik, buna görə də tam ədəd istifadə etsəm, mən həmişə qalan hissəsini 0 ilə alıram.

Python-da necə bir üzən nöqtə nöqtəsi olacağam?

 c = a / b 

Burada həqiqətən nə verilir:

" a/b hissəsinin geri qaytarılması üçün doğru bölünməni necə etmək olar?"

Python'a keçid 3

Python 3-də, doğru bölünmə əldə etmək üçün, yalnız a/b .

 >>> 1/2 0.5 

Cinslərin ayrılması, tam ədədlər üçün klassik bölünmə davranışı artıq a//b bərabərdir:

 >>> 1//2 0 >>> 1//2.0 0.0 

Lakin, Python 2 ilə sıxışdırıla bilər və ya 2-də, həm də 3-də işləyən kod yaza bilərsiniz.

Python 2 istifadə edərsə

Python 2-də bu asan deyil. Klassik Python 2 bölməsi ilə məşğul olmaq üçün bəzi yollar daha yaxşı və daha etibarlıdır.

Python 2 üçün tövsiyə

Python 3'ün davranışını hər hansı bir modulda yuxarıdakı idxal ilə əldə edə bilərsiniz:

 from __future__ import division 

sonra bütün modul üçün Python 3 stil bölməsini tətbiq edir. Hər hansı bir nöqtədə piton qabığında da işləyir. Python 2-də:

 >>> from __future__ import division >>> 1/2 0.5 >>> 1//2 0 >>> 1//2.0 0.0 

Bu, həqiqətən, ən yaxşı həllindir, çünki modulunuzdakı kod Python 3 ilə daha uyğun gəlir.

Python 2 üçün digər variantlar

Bunu bütün modullara tətbiq etmək istəmirsinizsə, bir neçə müddətə məhdudlaşırsınız. Ən məşhur operandlardan biri üzmək üçün bir məcbur edir. Bir etibarlı həll a/(b * 1.0) . Yeni Python qabığında:

 >>> 1/(2 * 1.0) 0.5 

truediv operator.truediv(a, b) modulundan truediv də etibarlıdır, lakin funksiya çağırışı olduğu üçün bu, yəqin ki, yavaş olur:

 >>> from operator import truediv >>> truediv(1, 2) 0.5 

Python 2 üçün məsləhət görülmür

a/float(b) adətən qəbul edilir. B, kompleks bir nömrədirsə, bir TypeError səbəb olur. Kompleks ədədlər bölünməsi müəyyən edildiyindən, mənim üçün bölünmə kompleksinə keçərkən bir bölmə uğursuzluğuna sahib deyil.

 >>> 1 / float(2) 0.5 >>> 1 / float(2j) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: can't convert complex to float 

Mənim üçün kodunuzu məqsədyönlü etmək daha mürəkkəb deyil.

Python -Qnew bayrağı ilə də Python da çalıştırabilirsiniz, ancaq bu, bütün Python 3 davranışı ilə bütün modulların işləməsinin dezavantajına malikdir və modullarınızdan bəziləri klassik bölünməni gözləyə bilər, buna görə test üçün istisna deyiləm. Amma göstərmək üçün:

 $ python -Qnew -c 'print 1/2' 0.5 $ python -Qnew -c 'print 1/2j' -0.5j 
122
18 сент. Cavab Aaron Hall 18 sep tərəfindən verilir . 2015-09-18 20:29 '15 'də 20:29' də, 2015-09-18 20:29

Python 3.x-də, tək slash ( / ) həmişə həqiqətdir (kəsmə deyil) bölmə deməkdir. ( // operator bölməni kəsmək üçün istifadə olunur.) Python 2.x (2.2 və daha yüksək), eyni davranışı qəbulu ilə əldə edə bilərsiniz

 from __future__ import division 

modulun üstündə.

63
12 авг. Cavab verilir . 2009-08-12 21:30 '09 09:30 'da 2009-08-12 21:30

Üzən nöqtə bölmə parametrlərinin hər hansı birinin yerinə yetirilməsi də nəticəni üzən bir nöqtədə göstərir.

Məsələn:

 >>> 4.0/3 1.3333333333333333 

ya da,

 >>> 4 / 3.0 1.3333333333333333 

ya da,

 >>> 4 / float(3) 1.3333333333333333 

ya da,

 >>> float(4) / 3 1.3333333333333333 
29
24 сент. Cavab gsbabil 24 sep tərəfindən verilir . 2010-09-24 09:22 '10 saat 09:22 'da 2010-09-24 09:22

Bir dövr əlavə edin ( . ) Üzən nöqtə nömrələrini göstərmək üçün.

 >>> 4/3. 1.3333333333333333 

və ya

 >>> from __future__ import division >>> 4/3 1.3333333333333333 
20
22 нояб. Cavab 22 İyun tarixində İskəndər tərəfindən verilir. 2014-11-22 17:39 '14 at 17:39 pm 2014-11-22 17:39

Bu da işləyəcək.

 >>> u=1./5 >>> print u 

0.2

12
24 дек. Cavab 24 dekabrda Gaurav Agarwal tərəfindən verilmişdir. 2013-12-24 22:58 '13 saat 10:58 pm 2013-12-24 22:58

Əgər "true" (floating-point) bölməsini default olaraq istifadə etmək istəyirsinizsə, bir əmr satırı bayrağı var:

 python -Q new foo.py 

Bəzi mənfi cəhətlər var (PEP-dən):

Sifarişin dəyişdirilməsi üçün command line seçimi pisdir. Bu yanlış əllərdə təhlükəli ola bilər: məsələn, tələb edən üçüncü tərəf Kitabxana paketini birləşdirmək mümkün olmayacaq - başqa bir tələblə tələb edir - Qold.

Python manual səhifəsini görüntüləyərək, bölüşdürmə davranışını dəyişdirən / xəbərdar edən digər bayraq dəyərləri haqqında daha çox məlumat əldə edə bilərsiniz.

Bölmələrdəki dəyişikliklər haqqında daha ətraflı məlumat üçün oxuyun: PEP 238 - Şöbə müdirinin işini dəyişdirin

6
07 янв. cavabı yanvarın 7-də verilir 2014-01-07 21:33 '14 at 21:33 2014-01-07 21:33

Əgər iki tamsayı bölürsəniz, python sizə bir tamsayı qaytaracaqdır, sonra bunu etmək lazımdır:

 c = float(a)/b 

və ya

 c = a/float(b) 

və sonra float tipini c almaq

5
21 июня '17 в 19:52 2017-06-21 19:52 Cavab Juan Camilo Torres Sánchez tərəfindən 21 İyun 'da 19:52 2017-06-21 19:52
 from operator import truediv c = truediv(a, b) 
3
18 сент. Cavab JoeCondron Sep 18 2015-09-18 13:04 '15 at 13:04 2015-09-18 13:04
 from operator import truediv c = truediv(a, b) 

bir dividend olduğu yerdə, b isə divisordur. Bu funksiya, iki tamsayı bölündükdən sonra faktiki bir float olduğunda rahatdır.

1
08 янв. Cavab verilir Chetan Yeshi 08 yanvar. 2016-01-08 08:23 '16 saat 08:23 'da 2016-01-08 08:23

Bu da işləyəcək.

və = 1. / 5 print u

 0.2 

12/24/13 saat 19:58 Gaurav Agarwal 6,7172279140 cavab verdi

Təşəkkür Gaurau, bu bir hiylə və olduqca səliqəli bir həlldir. Nümerik və nişanlanmanın dəyişən olduğu hallarda, "həll" 1-ci bölmə ilə vurulmalıdır.

Məsələn:

 aa = 2 bb = 3 aa / bb = 0 1. * aa / bb = 0.6666666666666666 

; -)

Max - İtaliya

1
15 июня '17 в 10:28 2017-06-15 10:28 Cavab Max1234-İTA 15 iyun 'da 10:28' də verilir. 2017-06-15 10:28

Yardımı ilə

növləri

dəyişənlərinizdən biri sehr edə bilər.

Python, məlumatların itirilməsini qarşısını almaq üçün daha aşağı bir məlumat növü (tamsayı) daha yüksək məlumat növünə (float) çevirməyə kömək edir.

Həm də typecasting adlanan dəqiq tipli dönüşümdən istifadə edərək istədiyiniz nəticəni əldə edəcəksiniz.

Əgər iki tamsayı bölüşdürürsəniz, python bir tamsayı sayını qaytaracaq, ancaq bir növü aşağı (int) və daha yüksək bir növü (float) ilə bölüşdürürsəniz, sonra bir typecast etmək lazımdır:

çıxış = float (a) / b

və ya

çıxış = a / float (b)

Nümunələr:

 >>> output= 5/2 >>> output 2 >>> output= 5/float(2) >>> output 2.5 >>> output= float(5)/2 >>> output 2.5 
0
10 авг. cavab Projesh Bhoumik 10 avqust tərəfindən verilir . 2018-08-10 10:27 '18 saat 10:27 'da 2018-08-10 10:27

Tags bağlı digər suallar və ya bir sual