লুয়া স্ট্রিং টু ইনট


182

আমি কীভাবে কোনও স্ট্রিংটিকে লুয়ার পূর্ণসংখ্যায় রূপান্তর করতে পারি?

আমার মতো স্ট্রিং রয়েছে:

a = "10"

আমি এটি 10 ​​এ রূপান্তর করতে চাই, সংখ্যাটি।


6
সুনির্দিষ্ট লিঙ্কটি হস্তক্ষেপের বিভাগ: 5.1 , 5.2
lhf

5
@ নিকোলবোলাস: প্রথম গুগলের ফলাফল এবং এমন প্রশ্ন জিজ্ঞাসা করার জন্য +1, যা সরাসরি-উত্তর-পয়েন্ট উত্তর সরবরাহ করে।
ereOn

2
এই কামড়ের ট্রোল ক্ষতিপূরণ করতে +1: নিকোল: ডি
Петров Петров

লুয়া কেবল স্ট্রিং এবং সংখ্যার মধ্যে রূপান্তর করে does আপনি যদি প্রকারটি নিশ্চিত করতে চান তবে a = tonumber (a) ব্যবহার করুন।
xpol

উত্তর:


298

tonumberফাংশনটি ব্যবহার করুন । হিসাবে হিসাবে a = tonumber("10")


4
লুয়া ৫.৩-তে ( -৪ -বিট ডিফল্ট) পূর্ণসংখ্যাগুলি সেই অনুযায়ী চিকিত্সা করা হয় ( lua.org/manual/5.3/manual.html ): "ভগ্নাংশের বিন্দু বা এক্সপোনেন্ট সহ একটি সংখ্যার ধ্রুবক একটি ফ্লোটকে বোঝায়; অন্যথায় এটি একটি পূর্ণসংখ্যাকে বোঝায়" "
কেভিন লি

33

আপনি গাণিতিক ক্রিয়াকলাপগুলিতে স্ট্রিংটি ব্যবহার করে একটি অন্তর্নিহিত রূপান্তরকে জোর করতে পারেন a= "10" + 0তবে এটি tonumberস্পষ্টভাবে ব্যবহার করার মতো পরিষ্কার বা পরিষ্কার নয় ।


2
না, এটি "10" কে পূর্ণসংখ্যায় রূপান্তরিত করবে এবং তারপরে এটিতে 0 যুক্ত করবে। (স্পষ্টতার অভাব tonumberপরিবর্তে আরও বেশি কারণ ব্যবহার করার কারণ !)
রেনা

16
@ রেনা, স্পষ্টতা নেই। +সর্বদা সুস্পষ্টভাবে সংযোজন, ..- মনগড়া।
ওলেগ ভি। ভোলকভ

1
@ এলএইচএফ: অটো জোর কেবলমাত্র সংখ্যায় কাজ করবে। এবং তুলনা অপারেটররা (== ~ = <> <=> =) তাদের যুক্তি রূপান্তর করে না। এবং কার্য সম্পাদনের কারণে আপনার খুব বেশি স্বয়ংক্রিয় জবরদস্তির উপর নির্ভর করা উচিত
wsha

9
local a = "10"
print(type(a))
local num = tonumber(a)
print(type(num))

আউটপুট

   string                                                                                                                                                                          
   number

8

লুয়ায় থাকা সমস্ত সংখ্যা ভাসমান ( সম্পাদনা করুন: লুয়া 5.2 বা তার চেয়ে কম)। আপনি যদি সত্যই কোনও "আন্ত" তে রূপান্তর করতে চান (বা কমপক্ষে এই আচরণটির প্রতিলিপি তৈরি করতে পারেন), আপনি এটি করতে পারেন:

local function ToInteger(number)
    return math.floor(tonumber(number) or error("Could not cast '" .. tostring(number) .. "' to number.'"))
end

সেক্ষেত্রে আপনি স্পষ্টভাবে স্ট্রিংটিকে (বা সত্যিই তা যাই হোক না কেন) একটি সংখ্যায় রূপান্তর করুন এবং তারপরে জাভাতে (অন্তর্নির্মিত) কাস্টের মতো সংখ্যাটি কেটে ফেলুন।

সম্পাদনা: এটি এখনও লুয়া ৫.৩ এ কাজ করে, এমনকি লুয়া ৫.৩ এর সত্যিকার পূর্ণসংখ্যা রয়েছে বলে মনে হয়েছিল math.floor(), যেখানে কোনও পূর্ণসংখ্যা যেমন একটি অপারেটর number // 1এখনও একটি ফ্ল্যাট ফেরত দেবে number


5

বলুন যে স্ট্রিংটি আপনি একটি সংখ্যায় রূপান্তর করতে চান তা ভেরিয়েবলের মধ্যে রয়েছে S

a=tonumber(S)

যদি শর্ত থাকে যে এর মধ্যে সংখ্যা রয়েছে এবং কেবলমাত্র সংখ্যাগুলি Sএকটি সংখ্যার প্রত্যাবর্তন করবে, তবে যদি এমন কোনও অক্ষর থাকে যা সংখ্যা না থাকে (ভাসমানের জন্য পিরিয়ড ব্যতীত) তবে এটি শূন্য হয়ে যাবে


4

ক্লিয়ারার বিকল্পটি আজকের রাতটি ব্যবহার করা ।

5.3.2 হিসাবে, এই ফাংশনটি স্বয়ংক্রিয়ভাবে (স্বাক্ষরিত) পূর্ণসংখ্যা সনাক্ত করবে, ভাসমান (যদি কোনও বিন্দু উপস্থিত থাকে) এবং হেক্সাডেসিমাল (উভয় পূর্ণসংখ্যা এবং ভাসমান, যদি স্ট্রিং "0x" বা "0 এক্স" দিয়ে শুরু হয়)।

নিম্নলিখিত স্নিপেটগুলি সংক্ষিপ্ত তবে সমতুল্য নয়:

  • a + 0 -- forces the conversion into float, due to how + works.
  • a | 0 -- (| is the bitwise or) forces the conversion into integer. 
    -- However, unlike `math.tointeger`, it errors if it fails.

3

এটি লক্ষ করা উচিত যে math.floor()সর্বদা গোল হয়ে যায়, এবং তাই নেতিবাচক ভাসমান মানের মানগুলির জন্য একটি বুদ্ধিমান ফলাফল দেয় না।

উদাহরণস্বরূপ, -10.4 একটি পূর্ণসংখ্যার হিসাবে উপস্থাপিত হয় সাধারণত হয় কাটা বা -10 হয়। তবুও গণিতের ফল () এর ফল এক নয়:

math.floor(-10.4) => -11

ধরণের রূপান্তর সহ সংক্ষিপ্তসার জন্য, নিম্নলিখিত সহায়ক ফাংশনটি কাজ করবে:

function tointeger( x )
    num = tonumber( x )
    return num < 0 and math.ceil( num ) or math.floor( num )
end

তথ্যসূত্র: http://lua.2524044.n2.nabble.com/5-3-Converting-a-floating-Point-number-to-integer-td7664081.html


2

আপনি এতে 10 "ইন্টি 10" রাখতে একটি অ্যাক্সেসর তৈরি করতে পারেন।

উদাহরণ:

x = tonumber("10")

আপনি যদি x ভেরিয়েবল মুদ্রণ করেন তবে এটি "10" নয় একটি ইনট 10 আউটপুট তৈরি করবে

পাইথন প্রক্রিয়া মত একই

x = int ("10")

ধন্যবাদ।


2

আমি হাইপারপলিগ্লোট চেক করতে পুনরায় সংশোধন করব, এর একটি দুর্দান্ত তুলনা রয়েছে: http://hyperpolyglot.org/

http://hyperpolyglot.org/more#str-to-num-note

পুনশ্চ. আসলে লুয়া ইনটসে ডাবলসে রূপান্তরিত করে।

সংখ্যা প্রকারটি আসল (ডাবল-নির্ভুলতা ভাসমান-পয়েন্ট) সংখ্যার প্রতিনিধিত্ব করে।

http://www.lua.org/pil/2.3.html


1

tonumber (e [, base])

tonumberদুটি আর্গুমেন্ট নেয়, প্রথমটি স্ট্রিং যা সংখ্যায় রূপান্তরিত হয় এবং দ্বিতীয়টি বেস হয় e

রিটার্ন মান tonumber10 বেস হয়।

যদি কোনও baseসরবরাহ না করা হয় তবে এটি সংখ্যাকে বেস 10 এ রূপান্তর করে।

> a = '101'
> tonumber(a)
101

যদি বেস সরবরাহ করা হয় তবে এটি এটিকে প্রদত্ত বেসে রূপান্তর করে।

> a = '101'
> 
> tonumber(a, 2)
5
> tonumber(a, 8)
65
> tonumber(a, 10)
101
> tonumber(a, 16)
257
> 

যদি eঅবৈধ অক্ষর থাকে তবে তা ফিরে আসে nil

> --[[ Failed because base 2 numbers consist (0 and 1) --]]
> a = '112'
> tonumber(a, 2)
nil
> 
> --[[ similar to above one, this failed because --]]
> --[[ base 8 consist (0 - 7) --]]
> --[[ base 10 consist (0 - 9) --]]
> a = 'AB'
> tonumber(a, 8)
nil
> tonumber(a, 10)
nil
> tonumber(a, 16)
171

আমি Lua5.3 বিবেচনা উত্তর


0
Lua 5.3.1  Copyright (C) 1994-2015 Lua.org, PUC-Rio
> math.floor("10");
10
> tonumber("10");
10
> "10" + 0;
10.0
> "10" | 0;
10

-1

এখানে আপনার করা উচিত

local stringnumber = "10"
local a = tonumber(stringnumber)
print(a + 10)

output:

20

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