Search In
• More options...
Find results that contain...
Find results in...

# rounding floats to nearest 0.2

## Recommended Posts

I'm using this code to determine temperature

```if(isPowered())
temperature += 1.0F;
temperature -= getCoolant(worldObj, xCoord, yCoord - 1, zCoord);
temperature = ((float) Math.ceil(temperature * 5) / 5.0F);
if(temperature < 0.0F)
temperature = 0.0F;```

and here's the getCoolant() method

```public float getCoolant(World world, int x, int y, int z)
{
float coolant = 0.0F;
for(int i = -1; i < 2; i++)
{
for(int j = -1; j < 2; j++)
{
int block = world.getBlockId(x + i, y, z + j);
if(block == Block.waterMoving.blockID || block == Block.waterStill.blockID)
{
coolant += 0.2F;
}
else if(block == Block.lavaMoving.blockID || block == Block.lavaStill.blockID)
{
coolant -= 0.2F;
}
else if(Block.blocksList[block] != null && Block.blocksList[block] instanceof BlockFluidBase)
{
BlockFluidBase liquid = (BlockFluidBase) Block.blocksList[block];
Fluid fluid = liquid.getFluid();
if(fluid != null)
{
if((float) fluid.getTemperature(world, x + i, y, z + j) < getTemperature())
coolant += 0.2F;
else
coolant -= 0.2F;
}
}
}
}
return coolant;
}```

but in the gui it shows up as x.6 then x.2 then x.0 then x.6 then x.2 then x.0 then... so I was wondering if anyone knows how I could get this to work better correctly? currently 2/9 spots are obstructed if that helps. also, the liquid being used is water, so the BlockFluidBase part of the method doesn't matter.

##### Share on other sites

If this is simply a Java question, this would be a much better fit for StackOverflow. In fact, I'll bet you anything it's already been answered there!

I like to make mods, just like you. Here's one worth checking out

##### Share on other sites

funny thing, I was looking on the internet for such a solution and didn't find a working one. :-( I'll try again. but let me know if you come up with anything.

##### Share on other sites

I figured out a solution on my own.

##### Share on other sites

I figured out a solution on my own.

Would you mind sharing the concept behind your solution? I can't be bothered to work it out from scratch

I am Mew. The Legendary Psychic. I behave oddly and am always playing practical jokes.

I have also found that I really love making extremely long and extremely but sometimes not so descriptive variables. Sort of like what I just did there

##### Share on other sites

well logicly its roughly

float x = wtv;

round = ((int)((wtv+0.1)*5))/5f;

how to debug 101:http://www.minecraftforge.net/wiki/Debug_101

-hydroflame, author of the forge revolution-

##### Share on other sites

what he said. his way is more efficient than what I had.

##### Share on other sites

you need flow control if the temperature is negative though :\ like i said that "roughly" the formula

how to debug 101:http://www.minecraftforge.net/wiki/Debug_101

-hydroflame, author of the forge revolution-

##### Share on other sites

I do that later in the method.

##### Share on other sites

or dont have negative temperature (degree kelvin ?)

how to debug 101:http://www.minecraftforge.net/wiki/Debug_101

-hydroflame, author of the forge revolution-

##### Share on other sites

that's basically what I do, if it's less than 0 I set it to 0

##### Share on other sites

problem solved !

how to debug 101:http://www.minecraftforge.net/wiki/Debug_101

-hydroflame, author of the forge revolution-

Yep!

## Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

×   Pasted as rich text.   Restore formatting

Only 75 emoji are allowed.

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×

×

• #### Activity

×
• Create New...