Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by Bluestrike · Nov 26, 2013 at 05:37 PM · javascriptfloat

match float values

Is there any way to match float values? From what I understand in searching around floats can be slightly off if they have many decimals.

But I only want to match a small number with 3 or 4 decimals. In the code below my debug.log shows 0.1090088 while I want it to be 0.109 is this possible or should I convert my versioning to an int?

 var cryptCurrentVersion :float;
 var floatKey :float;
 
 function set currentVersion (value : float) 
 { 
     cryptCurrentVersion = value + floatKey; 
 }
 function get currentVersion () : float
 {
     return cryptCurrentVersion - floatKey; 
 }
 
 
 function Awake()
 {
     floatKey             = UnityEngine.Random.Range(95.5055, 995.5055);
     
     currentVersion         = 0.109;
     
     Debug.Log(currentVersion);
     
     var latestVersion :float = 0.109;
     
     if(currentVersion != latestVersion)
     {
         // Update game
     }
 }
Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

3 Replies

· Add your reply
  • Sort: 
avatar image
1
Best Answer

Answer by iwaldrop · Nov 26, 2013 at 05:40 PM

You should use the Mathf.Approximately method to compare floats rather than directly comparing them.

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image
0

Answer by Bluestrike · Nov 26, 2013 at 05:43 PM

Wel and sometimes the awnser hits you after you posted a question :) Adding this before the if statement seems to do the trick as now both values have the same caculation "error". not sure if this is the best way to do this tough so I leave this question open for a bit loinger.

 latestVersion += floatKey;
 latestVersion -= floatKey;        
Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image
0

Answer by Kusho · Nov 26, 2013 at 05:47 PM

There is a JavaScript function called "toFixed(numberOfDecimals)" that may help you. Dunno if it works on Unity, but give it a try:

var num : float = 5.5678;

var fNum : float = 0.0;

fNum = num.toFixed(3);

Then fNum will be 5.568, i think.

Comment
Add comment · Show 1 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image Bluestrike · Nov 26, 2013 at 06:35 PM 0
Share

Here I found a nice function with tolerance control now I konow what to search for: http://answers.unity3d.com/questions/34888/float-comparison-is-not-working.html

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

18 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Insert a semicolon at the end Error. (JavaScript) 1 Answer

variable from int to float in javascript for loop 1 Answer

Cannot convert 'String' to 'float (but im actualy converting a float to a string) 2 Answers

Saving Object Position in Float NOT Object 1 Answer

3d text will not display float 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges