ToFixed () এবং toPrecision () এর মধ্যে পার্থক্য?


124

আমি জাভাস্ক্রিপ্টে নতুন এবং সন্ধান করেছি toFixed()এবং toPrecision()সংখ্যাসমূহে এসেছি । তবে দুজনের মধ্যে পার্থক্য কী তা আমি বুঝতে পারি না।

মধ্যে পার্থক্য কি number.toFixed()এবং number.toPrecision()?

উত্তর:


133

toFixed(n)nদশমিক বিন্দুর পরে দৈর্ঘ্য সরবরাহ করে ; toPrecision(x)উপলব্ধ xমোট দৈর্ঘ্য।

সূত্র W3Schools হয়: toFixed এবং toPrecision

সম্পাদনা :
আমি কিছুক্ষণ আগে জানতে পেরেছিলাম যে ডাব্লু 3 স্কুলগুলি সবচেয়ে ভাল উত্স নয়, তবে আমি এই উত্তরটি ভুলে গেছি যতক্ষণ না আমি কেজেজ, উহ, "উত্সাহী" মন্তব্য না দেখি। এখানে মোজিলা ডক সেন্টার থেকে অতিরিক্ত refs হয় জন্যtoFixed() এবং জন্যtoPrecision() । সৌভাগ্যক্রমে আমাদের সবার জন্য, এমডিসি এবং ডাব্লু 3 স্কুলগুলি এক্ষেত্রে একে অপরের সাথে একমত হয়।

সম্পূর্ণতার জন্য, আমার সাথে এটি উল্লেখ করা উচিত toFixed()যা সমান toFixed(0)এবং toPrecision()কেবল বিন্যাস ছাড়াই মূল নম্বরটি দেয়।


11
বাহ, আমি এটি ২০১০ সালের জুলাইয়ে পোস্ট করেছি এবং আমি এই বছর পর্যন্ত w3fools সম্পর্কে শিখিনি। যদিও বোকা কিছু জিনিস সম্পর্কে সঠিক, না সবকিছু স্কুলের উপর ভুল। যদিও এই পোস্টটি আমার আপডেট করা দরকার তা উল্লেখ করার জন্য ধন্যবাদ; এটি একটি বিট করতে হবে।
পোপগুলি

24
toPrecision(x)" xমোট দৈর্ঘ্য সরবরাহ করে না" , এটি প্রদত্ত কয়েকটি উল্লেখযোগ্য সংখ্যাকে ফর্ম্যাট করে। উদাহরণস্বরূপ, 0.0000022.toPrecision(1)ফিরে আসবে 0.000002
অ্যান্ডি ই

5
আমি কেবল w3fools পরিদর্শন করেছি এবং যা নিশ্চিত তা নিশ্চিত ছিল না। এমনকি কোনও যুক্তিও দেখছি না। আমি যা দেখছি সেগুলিই অন্য দুটি সাইটের বিজ্ঞাপন।
NiCk নিউম্যান

2
বিবৃতি "... toPrecision(x)প্রদান করে xমোট দৈর্ঘ্য।" অগত্যা ধরে রাখা হয় না। পাল্টা উদাহরণ:0.00001234.toPrecision(3)
ডিজেভিজি

59

আমি বিশ্বাস করি যে পূর্ববর্তী আপনাকে দশমিক দশকের একটি নির্দিষ্ট সংখ্যক স্থান দেয়, তবে পরেরটি আপনাকে নির্দিষ্ট সংখ্যাগুলির একটি নির্দিষ্ট সংখ্যা দেয়।

Math.PI.toFixed(2); // "3.14"
Math.PI.toPrecision(2); // "3.1"

তদ্ব্যতীত, toPrecisionসমর্পণ করা হবে বৈজ্ঞানিক স্বরলিপি যদি নির্দিষ্ট স্পষ্টতা থেকে সংখ্যায় অধিক পূর্ণসংখ্যা ডিজিটের হয়।

(Math.PI * 10).toPrecision(2); // "31"
(Math.PI * 100).toPrecision(2); // "3.1e+2"

সম্পাদনা: ওহ, এবং আপনি যদি জাভাস্ক্রিপ্টে নতুন হন তবে আমি ডগলাস ক্রকফোর্ডের " জাভাস্ক্রিপ্ট: দ্য গুড পার্টস " বইটি খুব সুপারিশ করতে পারি ।


14

উদাহরণগুলি স্পষ্টভাবে বলে:

var A = 123.456789;

A.toFixed()      // 123
A.toFixed(0)     // 123
A.toFixed(1)     // 123.5
A.toFixed(2)     // 123.46
A.toFixed(3)     // 123.457
A.toFixed(4)     // 123.4568
A.toFixed(5)     // 123.45679
A.toFixed(6)     // 123.456789
A.toFixed(7)     // 123.4567890
A.toFixed(8)     // 123.45678900
A.toFixed(9)     // 123.456789000
A.toFixed(10)    // 123.4567890000
A.toFixed(11)    // 123.45678900000

A.toPrecision()      // 123.456789 
A.toPrecision(0)     // --- ERROR --- 
A.toPrecision(1)     // 1e+2
A.toPrecision(2)     // 1.2e+2
A.toPrecision(3)     // 123
A.toPrecision(4)     // 123.5
A.toPrecision(5)     // 123.46
A.toPrecision(6)     // 123.457
A.toPrecision(7)     // 123.4568
A.toPrecision(8)     // 123.45679
A.toPrecision(9)     // 123.456789
A.toPrecision(10)    // 123.4567890
A.toPrecision(11)    // 123.45678900

11

আমি মনে করি এটির সর্বোত্তম উদাহরণ একটি উদাহরণ দিয়ে দেওয়া হয়েছে।

ধরা যাক আপনার নিম্নলিখিত ডেটা রয়েছে:

var products = [
  {
    "title": "Really Nice Pen",
    "price": 150
  },
  {
    "title": "Golf Shirt",
    "price": 49.99
  },
  {
    "title": "My Car",
    "price": 1234.56
  }
]

আপনি এই পণ্যগুলির প্রতিটি শিরোনাম এবং ফর্ম্যাট মূল্য সহ প্রদর্শন করতে চান। toPrecisionপ্রথমে ব্যবহার করার চেষ্টা করুন :

document.write("The price of " + products[0].title + " is $" + products[0].price.toPrecision(5));

The price of Really Nice Pen is $150.00

দেখতে দুর্দান্ত লাগছে, তাই আপনি ভাবতে পারেন এটি অন্যান্য পণ্যগুলির জন্যও কাজ করবে:

document.write("The price of " + products[1].title + " is $" + products[2].price.toPrecision(5));
document.write("The price of " + products[2].title + " is $" + products[2].price.toPrecision(5));

The price of Golf Shirt is $49.990
The price of My Car is $1234.6

এত ভাল না। আমরা প্রতিটি পণ্যের জন্য উল্লেখযোগ্য অঙ্কের সংখ্যা পরিবর্তন করে এটি ঠিক করতে পারি, তবে আমরা যদি এমন পণ্যগুলির অ্যারে নিয়ে পুনরাবৃত্তি করি যা জটিল হতে পারে। toFixedপরিবর্তে ব্যবহার করুন:

document.write("The price of " + products[0].title + " is $" + products[0].price.toFixed(2));
document.write("The price of " + products[1].title + " is $" + products[2].price.toFixed(2));
document.write("The price of " + products[2].title + " is $" + products[2].price.toFixed(2));

The price of Really Nice Pen is $150.00
The price of Golf Shirt is $49.99
The price of My Car is $1234.56

এটি আপনার প্রত্যাশা মতো তৈরি করে। কোনও অনুমানের কাজ জড়িত নেই, এবং কোনও বৃত্তাকার নেই।



5

নির্দিষ্ট পরিস্থিতিতে, toPrecision()তাত্পর্যপূর্ণ স্বরলিপি ফিরে আসবে, যেখানে তা toFixed()হবে না।


আসলে, toExponential()একটি পৃথক ফাংশন
পোপস

4
@ লর্ড টর্গামাস: জাভাস্ক্রিপ্টের আমার অনুলিপি অনুসারে : সংজ্ঞা নির্দেশিকা , টু প্রিসিশন (যথার্থতা) সংখ্যার পূর্ণসংখ্যার অংশের সমস্ত অঙ্কগুলি অন্তর্ভুক্ত করার জন্য যথাযথ আর্গটি যথেষ্ট বড় হলে স্থির-পয়েন্ট স্বরলিপি ব্যবহার করবে । অন্যথায়, সূচকীয় স্বরলিপি ব্যবহার করা হয়।
রোবস্তো

কমপক্ষে কিছু ক্ষেত্রে, এটি সঠিক নয়: আমার ফায়ারফক্সে, সাথে a = 999999999999999934464;, a.toFixed(0)ফেরত দেয় "1e+21"। সম্ভবত আরও সঠিক উত্তরটি হ'ল টু ফিক্সড () টস স্ট্রিং () না করলে ক্ষতিকারক স্বরলিপি দেয় না।
পল

1

উদাহরণস্বরূপ, আমরা ভ্যারিয়েবলটিকে as হিসাবে বিবেচনা করি, var a = 123.45 a.toPrecision (6) আউটপুটটি 123.450 a.toFixed (6) আউটপুট দশমিক বিন্দুর পরে 123.450000 // 6 ডিজিটের মতো হয়


0

উভয় toPrecision()এবং toFixed()এটি মুদ্রণের আগে কোনও সংখ্যা ফর্ম্যাট করার জন্য ডিজাইন করা ফাংশন। সুতরাং তারা উভয়ই Stringমান ফেরত দেয় ।

একটি ব্যতিক্রম আছে। অপারেটর অগ্রাধিকারের কারণে আপনি যদি এই ফাংশনগুলি একটি নেতিবাচক সংখ্যা আক্ষরিক ব্যবহার করেন তবে একটি নম্বর ফিরে আসে। এর অর্থ কী toFixed()বা এটি toPrecision()প্রথমে একটি স্ট্রিং ফিরে আসবে এবং তারপরে- বিয়োগকারী অপারেটর স্ট্রিংটিকে একটি নেতিবাচক মান হিসাবে আবার সংখ্যায় রূপান্তর করবে। উদাহরণ হিসাবে নীচে দেখুন।

toPrecision()Stringউল্লেখযোগ্য অঙ্কগুলিতে গোলাকার স্থির-পয়েন্ট বা সূচকীয় স্বরলিপিতে সংখ্যা অবজেক্টকে প্রতিনিধিত্ব করে returns সুতরাং আপনি যদি উল্লেখ করেন যে আপনি 1 এর যথার্থতা চান তবে তা উল্লেখযোগ্য সংখ্যা <0 হলে এর দশমিক বিন্দুর আগে 10 বা পূর্ববর্তী 0 এর শক্তি চিহ্নিত করতে বৈজ্ঞানিক স্বরলিপি সহ প্রথম উল্লেখযোগ্য সংখ্যাটি প্রদান করে।

const num1 = 123.4567;

// if no arguments are passed, it is similar to converting the Number to String
num1.toPrecision();   // returns "123.4567

// scientific notation is used when you pass precision count less than total
// number of digits left of the period
num1.toPrecision(2);  // returns "1.2e+2"

// last digit is rounded if precision is less than total significant digits
num1.toPrecision(4);  // returns "123.5"
num1.toPrecision(5);  // returns "123.46"

const largeNum = 456.789;
largeNum.toPrecision(2);  // returns "4.6e+2"

// trailing zeroes are added if precision is > total digits of the number or float
num1.toPrecision(9);  // returns "123.456700"

const num2 = 123;
num2.toPrecision(4);  // returns "123.0"

const num3 = 0.00123;
num3.toPrecision(4);  // returns "0.001230"
num3.toPrecision(5);  // returns "0.0012300"

// if the number is < 1, precision is by the significant digits
num3.toPrecision(1);  // returns "0.001"

toFixed()একটি ফেরৎ Stringনির্দিষ্ট বিন্দু স্বরলিপি সংখ্যা বস্তুর প্রতিনিধিত্বমূলক, বৃত্তাকার আপ। এই ফাংশনটি দশমিক পয়েন্ট সংখ্যাগুলি সম্পর্কেই চিন্তা করে

const num1 = 123.4567;

// if no argument is passed, the fractions are removed
num1.toFixed();  // returns "123"

// specifying an argument means you the amount of numbers after the decimal point
num1.toFixed(1);  // returns "123.5"
num1.toFixed(3);  // returns "123.457"
num1.toFixed(5);  // returns "123.45670"
num1.toFixed(7);  // returns "123.4567000"

// trying to operator on number literals
2.34.toFixed(1);  // returns "2.3"
2.toFixed(1);     // returns SyntaxError
(2).toFixed(1);   // returns "2.0"
(2.34e+5).toFixed(1);  // returns "234000.0"

আমি একটি ব্যতিক্রম উপরে উল্লেখ করেছি যেখানে negativeণাত্মক সংখ্যা আক্ষরিক উপর এই ফাংশনগুলি ব্যবহার করে অপারেটর প্রাধান্যের কারণে কোনও সংখ্যা ফিরে আসবে এবং স্ট্রিং নয়। এখানে কিছু উদাহরন:

// Note: these are returning as Number
// toPrecision()
-123.45.toPrecision();  // returns -123.45
-123.45.toPrecision(2);  // returns -120
-123.45.toPrecision(4);  // returns -123.5
-2.34e+2.toPrecision(1);  // returns -200
-0.0456.toPrecision(1);  // returns -0.05
-0.0456.toPrecision(6);  // returns -0.0456

// toFixed()
-123.45.toFixed();  // returns -123.45
-123.45.toFixed(1);  // returns -123.5
-123.45.toFixed(4);  // returns -123.45
-0.0456.toFixed(1);  // returns -0
-0.0456.toFixed(6);  // -0.0456

মজাদার ঘটনা: সেখানে স্বাক্ষরিত শূন্যগুলি রয়েছে -0.0456.toFixed(1)

দেখুন: +0 এবং -0 এক কি?

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.